2016-07-15 29 views
0

Ich verwende IIS 8.5 in einer Webfarm mit Lastenausgleich (zwei Knoten). Wir werden immer sporadische Fehler:"Das Anti-Fälschungs-Token konnte nicht entschlüsselt werden"

System.Web.Mvc.HttpAntiForgeryException (0x80004005): The anti-forgery 
token could not be decrypted.... 

Ich habe versucht,/überprüfte verschiedene Lösungen:

  • Auf der serverweiten Ebene, ich explizite Validierung und Entschlüsselungsschlüssel erstellt, wie here beschrieben, und haben sie über synchronisierte beide Knoten. Eine Sache, die zu beachten ist, ist, dass ich jetzt "Erzeuge einen eindeutigen Schlüssel für jede Anwendung" deaktiviert habe.
  • Das Token wird nur einmal pro Seite generiert, um das beschriebene Problem here zu vermeiden.

Aber die Fehler bestehen fort.

Was kann ich neben der Fehlerbehebung tun?


EDIT:

Controller-Code:

[HttpGet] 
public ActionResult Index() 
{ 
    var model = new LoginModel(); 
    return View(model); 
} 

Relevante Ansicht Code:

@using (Html.BeginForm()) 
{ 
    @Html.AntiForgeryToken() 
    @Html.ValidationSummary(true) 

    <h1>Log In</h1> 
    <fieldset> 
     <label>Email</label> 
     @Html.TextBoxFor(model => model.Username)       
     <label>Password</label> 
     @Html.PasswordFor(model => model.Password) 
     <input type="submit" /> 
    </fieldset> 
} 
+0

Können Sie uns den Code zeigen? Insbesondere die View- und Controller-Methode. Haben Sie die Computerschlüssel in allen .NET-Frameworks (64 und 32 Bit) auf beiden Computern synchronisiert? –

+0

Ich brauche eine Weile, um den Code zu anonymisieren. In Bezug auf den Maschinenschlüssel verstehe ich, dass der Maschinenschlüssel aus einem Validierungsschlüssel und einem Entschlüsselungsschlüssel besteht, die ich über die IIS-GUI wie im ersten Link beschrieben synchronisiert habe. Ist das ein falsches Verständnis? – anon

+0

Ich glaube, das ist richtig ... aber der Trick ist, es gibt mehrere machine.configs, eine für jede Version von .NET Framework auf dem Server installiert, und für jede Plattform (64/32 Bit). Wenn Sie einen Server vermisst haben und dieser von einem Server für diese Anforderung verwendet wird, treten diese Probleme auf. –

Antwort

0

ich gleiche genaue Problem hatte Schlüssel viele Menschen gab Vorschläge von Wechselmaschine oder es könnte passieren, wenn Sie Anti-Fälschung mehr als einmal in Form genommen haben. Meine Probleme sind nicht aus irgendeinem Grund passiert, es passiert aus einem einfachen dummen Grund und es ist unsachgemäße div Platzierung. Ich meine, wenn Sie ein Div in der MVC-Form schließen, die außerhalb geöffnet ist, dann werden Sie wahrscheinlich dieses Problem bekommen.