2011-01-14 13 views
1

Ich habe eine Beispielseite namens Redirect.aspx mit folgendem Inhalt;Validierung des Viewstate MAC beim Senden eines Formulars beim Laden der Seite fehlgeschlagen

<body onload="document.forms.container.submit()"> 
    <form id="container" runat="server" method="post" name="container"> 
     <input type="hidden" value="<%=Request["APP_ID"]%>" name="APP_ID" /> 
    </form> 
</body> 

die Page_Load Methode ist folgende:

protected void Page_Load(object sender, EventArgs e) 
{    
    container.Action = Configuration.Instance.PageToRedirect; 
} 

Zu dieser Redirect.aspx Seite, ich bin von einer externen Seite gerichtet. Im Anforderungskontext habe ich den Schlüssel APP_ID, der von dieser externen Seite übergeben wird. Als Nächstes möchte ich diesen APP_ID-Wert mithilfe von POST an eine andere Seite übergeben, die in der Konfiguration definiert ist. Leider bekomme ich einen solchen Fehler während der Weiterleitung:

Validierung der Viewstate MAC fehlgeschlagen. Wenn diese Anwendung von einem Web Farm oder Cluster gehostet wird, stellen Sie sicher, dass die Konfiguration denselben Validierungsschlüssel und denselben Validierungsalgorithmus wie angibt. AutoGenerate kann in einem Cluster nicht verwendet werden.

Ich möchte nicht Ansicht Zustandsprüfung (<pages enableViewStateMac="false">) deaktivieren, weil dies nicht die "Lösung" ist, die ich anwenden möchte.

Außerdem verstehe ich nicht, warum ich einen solchen Fehler bekomme. Kann mich jemand damit durchkommen? Gibt es eine andere Möglichkeit, ein Formular unter Page_Load Event automatisch zu senden?

Grüße

Antwort

0

ich denke, Sie Ihre Seiten-Tag in web.config mit bearbeiten:

<pages maxPageStateFieldLength="512"> 

vielleicht, es Ihr Problem beheben kann ...

+0

leider ist dies nicht die Lösung, aber trotzdem danke – jwaliszko

1

2 Ideen:

  1. Überprüfen Sie, ob der Wert <% = Request ["APP_ID"]%> wird tatsächlich berechnet und Sie sind nicht t posten das als String. Sie können keine HTML-Tag-Zeichen wie "<" oder ">" posten. Wenn der Wert nicht berechnet wird, bedeutet dies, dass Sie die Seite nicht binden. Eine schnelle Lösung wäre diese.DataBind() in Ihrem Code hinter die Datei zu setzen.

  2. Generieren Sie einen MachineKey manuell in Ihrer web.config (Sie können dafür ein Online-Tool verwenden: http://aspnetresources.com/tools/machineKey). In einer meiner Anwendungen löste es meine Probleme, auch wenn ich nicht in einer Webfarm bin (jetzt erinnere ich mich nicht mehr an die Details des Problems).

Auch diese Bitte klären: „Als nächstes möchte ich diesen APP_ID Wert zu übergeben mit POST zu einer anderen Seite, die in der Konfiguration definiert ist“ sind Sie sicher, dass der Fehler passiert, wenn Sie die Umleitung zu tun als Sie sagen, oder ist es in diesem Beitrag? Versuchen Sie, einen Wert an eine andere Anwendung in einer anderen Domäne zu senden? Das ist normalerweise nicht möglich.

+0

Hallo, 1. Ich bin nicht HTML-Tag haracters in dem POST-Zeichenfolge verwendet wird. Außerdem werden die Werte berechnet. 2. Ich habe den machineKey-Eintrag generiert und in web.config eingefügt, aber es hat nicht geholfen. Wenn es um die Klärung geht: Ich versuche, Daten an die Anwendung in der gleichen Domäne zu senden: von http: // localhost/app/Redirect.aspx zu http: //localhost/app/NewPage.aspx. Der Fehler tritt auf, nachdem die JavaScript-Funktion document.forms.container.submit() ausgeführt wurde. – jwaliszko

+0

Ok, ich musste zuerst diese Möglichkeiten prüfen. Ich habe auch gelesen, dass das Formular-Tag kein "Action" -Attribut haben sollte, ich weiß jetzt nicht, ob ASP.net dieses Attribut für Sie erstellt. – Durden81

+1

Die lustige Sache ist, dass, wenn ich dieses Attribut enableViewStateMac = "false" in das <% @ Page ... /> - Tag einfügen, alles funktioniert. Das Aktionsattribut scheint dann ordnungsgemäß zu funktionieren. Die einzige Sache ist, dass eine solche Lösung Sicherheitsprobleme hat, also muss ich das vermeiden, und ich weiß nicht, was vor sich geht;]. – jwaliszko

Verwandte Themen