Domanda

Recentemente ho implementato ELMAH sul mio sito e ho notato che abbiamo spesso ottenere il "Carattere non valido in una stringa Base-64" errore. Non ho mai innescato io stesso e nessuno dei nostri utenti si sono lamentati su di esso in modo da non so cosa sta succedendo. Da quel poco che sono riuscito a trovare su di esso sembra che il ViewState potrebbe essere sempre troppo grande o diventare danneggiato o qualcosa del genere. Qualcuno sa che cosa provoca questo e come prevenirlo? Qui ci sono che cosa credo sono le linee pertinenti nel YSOD.

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

C'è qualcosa che posso fare su questi errori o devo solo filtrarli in ELMAH?

È stato utile?

Soluzione

Potrebbe essere come le cose sono configurati. Date un'occhiata a questo:

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

Aggiorna

Prova a identificare dove si sta verificando. Ci possono essere diverse cause possibili:

"carattere non valido in Base-64 String" utilizzando ASP.NET e C #

asp.net non valido carattere in una stringa Base-64

Alla fine della giornata, se come dici tu, non è causa di alcun problema di produzione, quindi è possibile filtrare questi errori. Prova a impostare EnableViewStateMac false?

Altri suggerimenti

Nella mia esperienza, questo errore tende ad essere causa di l'utente fa doppio clic su un pulsante che attiva un postback. La seconda richiesta postback descritto, la prima. Il viewstate della prima richiesta viene presentata solo parzialmente, per cui non è valida, ma l'errore non può essere inviato al browser perché ha disconnesso, che innesca l'errore di livello superiore. Questo può essere un problema più grande se l'utente facendo qualcosa di due volte causa problemi. In caso contrario, questi errori possono semplicemente essere filtrati. Ecco un buon esempio di filtrare errori simili in ELMAH: https://stackoverflow.com/a/2549509/267448

Se si utilizza ASP.NET WebForms, ecco qualche codice per disabilitare il controllo di attivazione durante il postback: http: //disturbedbuddha.wordpress .com / 2007/12/10 / disabilitazione-a-trigger-control-durante-asincrono-postback /

Attenzione che se si disattiva un HTML tasto, è escluso dalle vostre variabili di modulo, in modo che il lato server evento Click non lo fa fuoco. La modifica a un correzioni. In WebForms, che sarebbe .

I lavori di cui sopra con le pagine WebForms AJAX, ma qui è anche un po 'di jQuery mi si avvicinò con per le altre pagine.

$(function () {
    $("a[href^='javascript']").click(function (event) {
        if (event.target.disabled)
            return false;
        event.target.disabled = true;
        setTimeout(function () {event.target.disabled = false;}, 250);
    });
});
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top