2012-04-04 7 views
0

Ich weiß nicht wirklich, wo ich anfangen soll. Ich bekomme:Fehler beim Laden des Viewstate-Fehlers nach dem Verschieben der Website auf einen neuen Server

`Failed to load viewstate. The control tree into which viewstate is being loaded must match the control tree that was used to save viewstate during the previous request. For example, when adding controls dynamically, the controls added during a post-back must match the type and position of the controls added during the initial request.` 

nach dem Verschieben einer Website auf einen neuen Server. Der exakt gleiche Code funktioniert auf meinem anderen Server. Es passiert, wenn ich eines meiner Formulare einsende (aber nicht bei allen Formulareinreichungen).

Irgendwelche Ideen, was kann dies verursachen, so muss ich irgendwo suchen?

verwenden: ASP.NET 2.

EDIT: ich auf einen Platzhalter dynamisch zur Laufzeit einige Bedienelemente am Hinzufügen aber gleiche Code funktioniert ok auf meinem anderen Server. Ich habe versucht, die Kontrollen im Platzhalter zu löschen, bevor ich neue hinzufüge (wie ich einen Beitrag darüber sah), aber es hat nicht geholfen.

EDIT2: Es scheint, dass das Postback nur fehlschlägt. Es wird nicht in den OnClick-Code der Schaltfläche gehen, also ist etwas defintiely screwy .. Wenn ich versuche, die Ausnahme zu fangen, scheint es, dass alle Steuerelemente noch erfolgreich hinzugefügt werden ... Einstellung meiner Dynamischen UC zu EnableViewState = false behebt dies bestimmter Fehler.

EDIT3: Ok, ich denke, ich kann einen Griff haben, was passiert. Aus irgendeinem Grund auf dem alten Server ist die Formularaktion default.aspx?action=amend, aber der neue Server zeigt amend.html?action=amend, so denke ich, dass das Umschreiben-Modul in IIS versaut ist. Dies würde auch das Problem des Hinzufügens von Steuerelementen erklären, weil die Aktion 2 mal passiert (denke ich). Ich werde in das Rewrite-Modul schauen und sehen, ob etwas falsch ist, und dann zurück posten.

+0

Beide Server haben dieselbe Version von .NET? Ich habe einige Fälle im Internet gefunden, als es durch einige Kompatibilitätsprobleme .net2 vs .net3.5 verursacht wurde, also lohnt es sich vielleicht zu überprüfen. – walther

+0

Ja, beide Server haben leider die selbe Version. – webnoob

+0

Haben Sie versucht, das Steuerelement zu identifizieren, das das verursacht? Fügen Sie dynamisch einige Steuerelemente hinzu? – walther

Antwort

1

Bitte haben Sie einen Blick auf diese Artikel:

http://blog.typps.com/2008/01/failed-to-load-viewstate-typical.html

http://weblogs.asp.net/guys/archive/2004/12/05/275321.aspx

Oder eine einfache temporäre Lösung versuchen - disable Ansichtszustand für diesen Platzhalter. So oder so, ich bin verwirrt, warum es tatsächlich auf Ihrem ersten Server funktioniert. Ich würde mich freuen, wenn jemand anderes dieses Thema mehr klären könnte.

+0

Ich habe eine andere Bearbeitung veröffentlicht, die etwas Licht abwerfen kann .. – webnoob

0

Es stellt sich heraus, dass die Post zurück Url für das Formular ist falsch auf diesem Server (unsicher, warum im Moment werde ich aktualisieren, wenn ich weiß). Dies führt dazu, dass die dynamischen Steuerelemente auf unerwartete Weise hinzugefügt werden und den Fehler verursachen. Das ist mir aufgefallen, als ich mein Formular gepostet habe und der Inhalt nicht aktualisiert wurde. Ich habe die Aktion URL manuell mit Firebug angepasst und alles ist gut.

Es lohnt sich, die Antwort von Walther bezüglich der dynamischen Steuerung und des Viewstates zu betrachten.

Nicht sicher, was es verursacht, aber ich manuell die Formularaktion in der Seite jetzt laden, und es scheint das Problem gelöst zu haben.

Verwandte Themen