Pregunta

Recientemente implementé Elmah en mi sitio y he notado que con frecuencia obtenemos el error de "carácter no válido en una cadena base-64". Nunca lo he activado yo mismo y ninguno de nuestros usuarios se ha quejado de ello, así que no sé qué está pasando. Desde el poco que pude encontrar al respecto, parece que el estatal Viewstate podría estar cada vez más grande o corrompirse o algo así. ¿Alguien sabe qué causa esto y cómo prevenirlo? Esto es lo que creo que son las líneas pertinentes en el YSOD.

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

¿Hay algo que pueda hacer sobre estos errores o debo filtrarlos en Elmah?

¿Fue útil?

Solución

Puede ser cómo se configuran las cosas. Mira esto:

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

ACTUALIZAR

Intente identificar dónde está ocurriendo. Puede haber varias causas potenciales:

"Carácter no válido en la cadena Base-64" usando ASP.NET y C#

ASP.NET CARÁCTER INVÁLIDO EN UNA CARDA BASE-64

Al final del día, si dice, no está causando ningún problema en la producción, entonces puede filtrar estos errores. Intente configurar habilitar ViewStateMac en falso?

Otros consejos

En mi experiencia, este error tiende a ser causado por el usuario haciendo doble clic en un botón que desencadena una posterior. La segunda solicitud de devolución de devolución cancela la primera. El ViewState de la primera solicitud solo se envía parcialmente, por lo que no es válido, pero el error no se puede enviar al navegador porque se ha desconectado, lo que desencadena el error de nivel superior. Este puede ser un problema mayor si el usuario que hace algo causa problemas. De lo contrario, estos errores se pueden filtrar simplemente. Aquí hay un buen ejemplo de filtrar errores similares en Elmah:https://stackoverflow.com/a/2549509/267448

Si está utilizando ASP.NET WebForms, aquí hay algún código para deshabilitar el control de activación durante la devolución:http://disturbedbuddha.wordpress.com/2007/12/10/disabling-a-trigger-control-during-asynchronous-postback/

Tenga cuidado de que si deshabilita un HTMLu003Cinput type="submit"> Botón, se excluye de sus variables de formulario, por lo que su evento de clic del lado del servidor no se dispara. Cambiándolo a unu003Cinput type="button"> arregla eso. En las formas web, eso seríau003Casp:Button UseSubmitBehavior="False" /> .

Lo anterior funciona con las páginas AJAX WebForms, pero aquí también hay un poco de jQuery que se me ocurrió para otras páginas.

$(function () {
    $("a[href^='javascript']").click(function (event) {
        if (event.target.disabled)
            return false;
        event.target.disabled = true;
        setTimeout(function () {event.target.disabled = false;}, 250);
    });
});
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top