2010-06-22 7 views
3

J'ai une erreur bizarre dans un couple d'applications MVC que je n'ai pas remarqué avant; ça se passe dans mon application (à travers le tableau) et c'est arrivé quand j'ai essayé de lancer la dernière version d'Orchard (donc je sais que ce n'est pas seulement mon code). Fondamentalement, le problème est que j'obtiens l'exception qui devrait être levée quand un AntiforgeryToken n'est pas fourni, mais est attendu, seulement je l'obtiens quand j'appuie sur les actions GET; la première fois que je visite une page.ASP.NET MVC AntiForgeryToken lançant son exception sur GET?

J'ai observé que le comportement se produisait lorsque je reconstruisais une application ou que je la redéployais. Par exemple, j'exécutais mon site sur mon serveur IIS local, puis modifiais les paramètres pour les exécuter dans Cassini (évidemment, la reconstruction, etc au milieu) et j'ai eu l'erreur. Même chose quand j'ai mis au rebut un site Orchard et l'ai reconstruit (dans le même VS). Pareil quand j'ai redéployé un site que j'ai sur le web.

La solution que j'ai trouvée consistait à effacer les cookies de mon navigateur, mais il semble très étrange que vous ayez cette erreur lors d'un GET contre un terminal, ou est-ce que quelque chose me manque?

Répondre

2

Ceci est dû au fait que le cookie est chiffré par différents environnements. Sans spécifier une clé machine pour le chiffrement, .NET utilise celui inclus dans machine.config.

Pour fixer ajouter une machine manuelle définition de la clé dans votre web.config:

<system.web>  
<machineKey validationKey="stuff" decryptionKey="stuff" validation="SHA1" decryption="AES" /> 

Utilisez cette option pour générer un:

http://aspnetresources.com/tools/keycreator.aspx

+0

Je vais essayer et marquer la réponse quand ça marche, merci. Je n'avais pas considéré cela. – Paul

+0

A travaillé, merci pour le pourboire! – Paul

1

Etes-vous certain que l'action que vous frappez n'est pas décorée avec l'attribut [ValidateAntiForgeryToken]? Cette exception est levée uniquement si vous avez l'attribut.

+0

positive. Ceci est en train d'être frappé du côté GET d'une méthode Create. Il n'a aucun attribut ValidateAntiForgeryToken, bien que le côté POST le fasse. C'est également à travers un certain nombre d'applications différentes. – Paul

Questions connexes