J'utilise Membership.create
l'erreur suivante se produit,
Le champ requis du formulaire anti-falsification "__RequestVerificationToken" n'est pas pas présent
Comment puis-je résoudre ce problème ?
J'utilise Membership.create
l'erreur suivante se produit,
Le champ requis du formulaire anti-falsification "__RequestVerificationToken" n'est pas pas présent
Comment puis-je résoudre ce problème ?
Une autre chose qui peut causer ce problème (je viens de le rencontrer) est la suivante : si, pour une raison quelconque, vous désactivez tous les champs de saisie de votre formulaire. cela désactivera le champ de saisie caché qui contient votre jeton de vérification. Lorsque le formulaire sera renvoyé, la valeur du jeton sera manquante et générera une erreur indiquant qu'elle est manquante. Vous devez donc réactiver le champ de saisie qui contient le jeton de vérification et tout ira bien.
Une autre possibilité pour ceux d'entre nous qui téléchargent des fichiers dans le cadre de la demande. Si la longueur du contenu dépasse <httpRuntime maxRequestLength="size in kilo bytes" />
et vous utilisez des jetons de vérification des requêtes, le navigateur affiche l'icône 'The required anti-forgery form field "__RequestVerificationToken" is not present'
au lieu du message de dépassement de la longueur de la requête.
Le fait d'attribuer à maxRequestLength une valeur suffisamment grande pour répondre à la demande résout le problème immédiat - même si j'admets que ce n'est pas une bonne solution (nous voulons que l'utilisateur connaisse le véritable problème de la taille du fichier, et non celui de l'absence de jetons de vérification de la demande).
Dans mon cas, j'avais ce javascript sur le formulaire de soumission :
$('form').submit(function () {
$('input').prop('disabled', true);
});
Il s'agissait de supprimer le RequestVerificationToken caché dans le formulaire soumis. J'ai changé cela en :
$('form').submit(function () {
$('input[type=submit]').prop('disabled', true);
$('input[type=text]').prop('readonly', true);
$('input[type=password]').prop('readonly', true);
});
... et cela a bien fonctionné.
Assurez-vous que dans votre contrôleur vous avez votre attribut http comme :
[HttpPost]
ajoutez également l'attribut dans le contrôleur :
[ValidateAntiForgeryToken]
Dans votre formulaire, sur votre avis, vous devez écrire :
@Html.AntiForgeryToken();
J'avais Html.AntiForgeryToken() ; sans le signe @ alors qu'il était dans un bloc de code, cela ne donnait pas d'erreur dans Razor mais en donnait au moment de l'exécution. Vérifiez que le signe @ de @Html.Ant. est manquant ou non.
Dans mon cas, cela était dû à l'ajout de requireSSL=true
a httpcookies
dans webconfig qui a fait que l'AntiForgeryToken ne fonctionne plus. Exemple :
<system.web>
<httpCookies httpOnlyCookies="true" requireSSL="true"/>
</system.web>
Pour que les deux requireSSL=true
y @Html.AntiForgeryToken()
j'ai ajouté cette ligne à l'intérieur du Application_BeginRequest
en Global.asax
protected void Application_BeginRequest(object sender, EventArgs e)
{
AntiForgeryConfig.RequireSsl = HttpContext.Current.Request.IsSecureConnection;
}
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.