Frage

Ich habe kürzlich Elmah auf meiner Website implementiert und habe festgestellt, dass wir häufig den Fehler "Ungültiges Zeichen in einem Basis-64-String" -Fehler erhalten. Ich habe es nie selbst ausgelöst und keiner unserer Benutzer hat sich darüber beschwert, also weiß ich nicht, was los ist. Aus dem kleinen, was ich darüber finden konnte, scheint es, als würde der ViewState zu groß oder zu korrumpiert oder so. Weiß jemand, was dies verursacht und wie es verhindern kann? Hier sind, was ich glaube, die relevanten Linien im YSOD.

[FormatException: Invalid character in a Base-64 string.]
[ViewStateException: Invalid viewstate. 
[HttpException (0x80004005): The client disconnected.]

Kann ich etwas gegen diese Fehler tun oder sollte ich sie einfach in Elmah filtern?

War es hilfreich?

Lösung

Es könnte sein, wie die Dinge konfiguriert werden. Schau dir das an:

http://groups.google.com/group/elmah/browse_thread/thread/ec9c4bdddaa1a9e/9108b48d3def87db?lnk=gst&q=viewstate+elmah#9108b48d3de7db

AKTUALISIEREN

Versuchen Sie, festzustellen, wo es auftritt. Es kann mehrere mögliche Ursachen geben:

"Ungültiges Zeichen in der Basis-64-String" mit ASP.NET und C##

ASP.NET Ungültiges Zeichen in einer Basis-64-Zeichenfolge

Letztendlich, wenn es, wie Sie sagen, kein Problem in der Produktion verursacht, können Sie diese Fehler herausfiltern. Versuchen Sie, EnableViewStatemac auf False einzustellen?

Andere Tipps

Meiner Erfahrung nach wird dieser Fehler durch den Benutzer tendenziell ein Ursache für einen Doppelklick auf eine Taste, die einen Postback auslöst. Die zweite Postback -Anfrage storniert die erste. Der ViewState der ersten Anfrage ist nur teilweise eingereicht, daher ist er ungültig, aber der Fehler kann nicht an den Browser gesendet werden, da er getrennt ist, was den obersten Fehler auslöst. Dies kann ein größeres Problem sein, wenn der Benutzer, der etwas zweimal tut, Probleme verursacht. Andernfalls können diese Fehler einfach gefiltert werden. Hier ist ein gutes Beispiel dafür, ähnliche Fehler in Elmah herauszufiltern:https://stackoverflow.com/a/2549509/267448

Wenn Sie ASP.NET WebForms verwenden, finden Sie hier einen Code, um die Auslösersteuerung während des Postbacks zu deaktivieren:http://disturbedbuddha.wordpress.com/2007/12/10/disabling-a-trigger-control-during-asynchronous-postback/

Vorsicht, wenn Sie eine HTML deaktivierenu003Cinput type="submit"> Die Schaltfläche ist von Ihren Formularvariablen ausgeschlossen, sodass Ihr serverseitiges Klickereignis nicht ausfängt. Ändern Sie es in eineu003Cinput type="button"> behebt das. In Webformen wäre dasu003Casp:Button UseSubmitBehavior="False" /> .

Das obige funktioniert mit Webforms Ajax Pages, aber hier ist auch ein bisschen jQuery, die ich für andere Seiten ausgedacht habe.

$(function () {
    $("a[href^='javascript']").click(function (event) {
        if (event.target.disabled)
            return false;
        event.target.disabled = true;
        setTimeout(function () {event.target.disabled = false;}, 250);
    });
});
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top