2009-06-26 14 views
3

Ich habe dieses Problem beim Posten einer Seite. Die Seite hat eine Jquery-Ajax-Last, die durch die On-Change-Funktion einer Dropdown-Liste aufgerufen wird. Wenn ich die Onchange-Funktion deaktiviere, funktioniert der Post."Ungültiges Zeichen in Base-64 String" mit ASP.NET und C#

„Die Zustandsinformationen für diese Seite ist ungültig und möglicherweise beschädigt“

[FormatException: Invalid character in a Base-64 string.] 
    System.Convert.FromBase64String(String s) +0 
    System.Web.UI.ObjectStateFormatter.Deserialize(String inputString) +72 
    System.Web.UI.ObjectStateFormatter.System.Web.UI.IStateFormatter.Deserialize(String serializedState) +4 
    System.Web.UI.Util.DeserializeWithAssert(IStateFormatter formatter, String serializedState) +37 
    System.Web.UI.HiddenFieldPageStatePersister.Load() +113 

[ViewStateException: invalid Viewstate. 
     Client IP: 127.0.0.1 
     Port: 
     User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729) 
     ViewState: /wEPDwULLTE1NjAwNjAwNDMPZBYCZg9kFgRmD2QWAgIOD2QWCAIBDxYCHgRUZXh0BSpTcGVyaW5kZSBJbcOzdmVpcyAmcnNhcXVvOyBQw6FnaW5hIEluaWNpYWxkAgMPFgIfAAUOdmVuZGFyLCBhbHVnYXJkAgUPFgIfAGVkAgcPFgIfAAUaaHR0cDovL3d3dy5zcGVyaW5kZS5jb20uYnJkAgEPZBYQAgMPEGQQFQEPVGlwbyBkZSBJbcOzdmVsFQEAFCsDAWdkZAIEDxBkEBUBBkNpZGFkZRUBABQrAwFnZGQCBg8QZA8WAWYWARAFD1RpcG8gZGUgSW3Ds3ZlbGVnZGQCBw8QD2QWAh4Ib25jaGFuZ2UFGSQuY2hhbmdlQ2l0eSh0aGlzLnZhbHVlKTsPFgFmFgEQBQZDaWRhZGVlZ2RkAggPZBYQAgEPFgIfAAUMTE9GVCBWSVNDQVlBZAIDDxYCHwAFKUNhc2EgMyBkb3JtaXTDs3Jpb3Mgbm8gYmFpcnJvIEJlbGEgVmlzdGEuZAIHDxYCHwAFHjxzdHJvbmc+UiQgMjUwLjAwMCwwMDwvc3Ryb25nPmQCCQ8WAh8ABRUxNTYwLjQ0IG08c3VwPjI8L3N1cD5kAgsPFgIfAAUJMyBlIDQgIEQuZAINDw8WBh8ABRBFeGNsdWlyIGRhIGxpc3RhHgdUb29sVGlwBRBFeGNsdWlyIGRhIGxpc3RhHgtOYXZpZ2F0ZVVybAUUI3JlbW92ZUxpbmsgMjEwMDM3NzlkZAIPDw8WBh8DBUB+L3ZlbmRhL2xhbmNhbWVudG...] 

[HttpException (0x80004005): As informações sobre estado são inválidas para esta página e podem estar corrompidas.] 
    System.Web.UI.ViewStateException.ThrowError(Exception inner, String persistedState, String errorPageMessage, Boolean macValidationError) +106 
    System.Web.UI.ViewStateException.ThrowViewStateError(Exception inner, String persistedState) +14 
    System.Web.UI.HiddenFieldPageStatePersister.Load() +217 
    System.Web.UI.Page.LoadPageStateFromPersistenceMedium() +105 
    System.Web.UI.Page.LoadAllState() +43 
    System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +6785 
    System.Web.UI.Page.ProcessRequest(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +242 
    System.Web.UI.Page.ProcessRequest() +80 
    System.Web.UI.Page.ProcessRequestWithNoAssert(HttpContext context) +21 
    System.Web.UI.Page.ProcessRequest(HttpContext context) +49 
    ASP.content_search_default_aspx.ProcessRequest(HttpContext context) in c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\web-site-2009\e4bfc9d6\d5d6c855\App_Web_zcb1qfmu.0.cs:0 
    System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +181 
    System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +75 

was könnte der Grund dafür? Wer hat es schon einmal gesehen?

Danke

EDIT:

So habe ich herausgefunden, warum diese happenning wird. Am Ende von Page_Load schreibe ich eine JavaScript-Zeile, die eine jquery-Funktion aufruft, die neue Felder in ein div lädt. Wie ich sehe, verursacht dies eine Inkonsistenz im Viewstate. Deaktivieren von ViewState ist keine Option für diesen Fall. Es funktioniert auf FF und es Bugs auf IE. Jemand?

Vielen Dank

Antwort

5

Gerade lief in diese. Entfernen Sie das Formular-Tag von der Seite, die Sie über jquery laden.

+0

Was ich getan habe, war das Entfernen der zusätzlichen __VIEWSTATE aus dem zweiten Formular mit jquery.remove() –

+0

aber, wenn Sie viewstate entfernen, funktionieren Postbacks? – Milox

0

Hatte das gleiche Problem, der Grund, warum ich den Fehler bekam, war, weil ich ein komplettes Formular als Zeichenfolge in eine Javascript-Methode schickte, die dann das Formular posten.

Das war ein bisschen schwer, und meine Lösung war, nur die Formulardaten als serialisierten JSON zu senden, und dann das Formular über Javascript zu erstellen und zu posten, wie in diesem Post.

http://weblogs.asp.net/hajan/archive/2011/03/16/posting-from-asp-net-webforms-page-to-another-url.aspx

0

ungültigen Anzeigestatus haben keinen Wert für Ihren Logger oder für Benutzer oder für Ihre Website diesen Fehler zu vermeiden, versuchen Sie Folgendes In Global.ascx hinzuzufügen:

void Application_Error(object sender, EventArgs e) 
    {   
       if (ex is HttpException && ex.InnerException is ViewStateException) 
       { 
        Response.Redirect(Request.Url.AbsoluteUri); 
        return; 
       } 
    } 

für weitere Informationen auf den folgenden Link überprüfen:

https://www.karpach.com/viewstateexception-invalid-viewstate.htm

Verwandte Themen