2010-10-18 24 views
19

Dado que he subido una versión actualizada de una aplicación ASP.NET MVC 1 al servidor, el Yellow Screen of Death ha cambiado a algo como esto:ASP.NET MVC: caracteres extraños en la página de error

I�%&/m�{J�J��t�� $ @ iG #) * eVe] f @ 흼 { ? N' ? \ Fdl J ɞ! ? ~ |? " Ey ') = y6 h ͼhR L w | 2 = Ez < 7 : 5 < + oy ��:� �T����W�v�<[��~2�g�2��?�ʋ�y�hYՋ������t� _N���M�l�����{�,��Xn���Q�}�����*g�������7�� ~� j'u> K { IW4 > U w | = -fYzR-

Al acceder a páginas con ingenio h errores directamente en el servidor a través de Escritorio remoto (Windows Server 2008 R2, IE8), IE incluso intenta descargar la respuesta pero obtiene un error (cuadro de mensaje).

¿Alguien ha encontrado esto antes? Alguna idea de como resolver esto?

También encontré esta pregunta, que parece ser muy simliar, pero lamentablemente no ha sido respondida por ahora: ASP.NET MVC app displaying weird characters

+0

¿Se puede usar Fiddler o Firebug para ver la respuesta? Además, verifique el registro de eventos; .NET debería informar el error allí. – mkchandler

+0

Fiddler muestra la misma respuesta que el navegador. El error es una simple 'Excepción'. Lo lancé intencionalmente en este caso, pero obtuve el mismo resultado con otros tipos de excepciones. – davehauser

+0

¿Tiene algún tipo de cultura o tipos de codificación de texto que podrían estar cambiando la codificación? ¿O tipos MIME que no son de texto en el encabezado? Establecer en su servidor web, web.config, o el controlador (o cualquier filtro de acción/autorización)? ¿Cuál es el encabezado completo de la respuesta HTTP? –

Respuesta

29

Lo más probable es la pantalla que está mostrando es causada por GZip codificación en el código. Probablemente esté aplicando Response.Filter a la clase GZip/DeflateStream y tenga la intención de codificar su contenido, pero luego se produce un error y ASP.NET borra sus encabezados, pero deja el filtro intacto. El resultado es que su contenido está codificado con GZip, pero el navegador no lo decodifica porque el encabezado Content-Encoding no está configurado.

Para solucionar este complemento:

Response.Filter = null 

en su rutina Application_Error en la parte superior a la fuerza de los filtros Repsonse para limpiar.

Otra cosa que puede arruinarte es el OutputCaching de contenido GZipped. Si se aplica OutputCaching, asegúrese de tener la opción VaryByCustom para permitir los diferentes tipos de codificación (ninguno, Gzip, Deflate lo más probable).

+++ Rick ---

+0

¡Genial! ¡un millón de gracias! – vtortola

+2

No podía creerlo cuando encontré esta respuesta, pensé que se había terminado el juego cuando vi que se servía, nunca he estado tan feliz de ver el YSOD. –

+0

mierda. Buena respuesta, pero estoy obteniendo este problema exacto y no está relacionado con GZip. –

Cuestiones relacionadas