web-dev-qa-db-fra.com

erreur de déploiement d'AntiforgeryToken

Je travaille sur une application ASP.NET MVC sur mon ordinateur local à l'aide de Visual Studio 2012 intégré à IISExpress. Après des progrès significatifs, j'ai décidé de le rendre disponible sur le réseau local. J'ai créé un répertoire virtuel à partir de visual studio. Je peux me connecter mais quand j'essaye d'enregistrer un nouvel utilisateur. Je reçois l'erreur ci-dessous. 

Le jeton anti-falsification n'a pas pu être déchiffré. Si cette application est hébergé par une batterie de serveurs Web ou un cluster, assurez-vous que toutes les machines exécutent la même version de Pages Web ASP.NET et que la configuration spécifie .__ explicite. clés de cryptage et de validation. AutoGenerate ne peut pas être utilisé dans un cluster.

J'ai généré une nouvelle clé d'ordinateur à partir de ( Ressources ASPNET ) et l'ai placée dans mon fichier de configuration, mais ne fonctionne toujours pas. Quelqu'un peut-il proposer une solution?

18
user1656779

Une chose que j’ai remarquée, c’est que cette erreur pouvait être provoquée par l’ajout de plusieurs éléments de code @Html.AntiForgeryToken() sur la page. J'avais 2 sur ma page et une fois que j'ai enlevé le second, cette erreur est partie.

33
Louis Rofrano

Vous devez ajouter une clé de machine propre à la combinaison site Web/machine. C'est cette clé machine que le générateur de jetons utilise. Cela signifie que vous devez générer une clé d'ordinateur (que vous pouvez faire ici (dead link-beware) et l'ajouter à votre fichier Web.config sur votre ordinateur. Vous trouverez plus d'informations ici: http://msdn.Microsoft.com/en-us/library/ff649308.aspx

Vous pouvez également le faire directement depuis IIS: http://blogs.msdn.com/b/amb/archive/2012/07/31/easiest-way-to-generate-machinekey.aspx

7
Erik Schierboom
4
Eugene Ilyushin

Dans mon cas, c'était un problème avec l'équilibreur de charge car la persistance de session n'était pas activée pour le site. 

1
CountZero

J'avais une page qui utilisait la vue partielle. Les deux contenaient @ Html.AntiForgeryToken () et en supprimant @ Html.AntiForgeryToken () de la page partielle, cela fonctionnait. 

0
Dev