2010-10-18 3 views
19

Depuis que je téléchargé une version mise à jour d'une application ASP.NET MVC 1 au serveur, le Yellow Screen of Death a changé quelque chose comme ceci:ASP.NET MVC: caractères étranges à la page d'erreur

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-

Lors de l'accès à des pages avec h erreurs directement sur le serveur via le Bureau à distance (Windows Server 2008 R2, IE8), IE essaie même de télécharger la réponse, mais obtenir une erreur (boîte de message).

Quelqu'un a déjà rencontré cela? Aucune idée sur la façon de résoudre ça?

Je trouve aussi cette question, qui semble être très simliar, mais n'a malheureusement pas été répondu maintenant: ASP.NET MVC app displaying weird characters

+0

Pouvez-vous utiliser Fiddler ou Firebug pour voir la réponse? En outre, vérifiez le journal des événements; .NET devrait signaler l'erreur là. – mkchandler

+0

Fiddler affiche la même réponse que le navigateur. L'erreur est une simple "Exception". Je l'ai jeté intentionnellement dans ce cas, mais j'ai obtenu le même résultat avec d'autres types d'exceptions. – davehauser

+0

Avez-vous des types de culture ou d'encodage de texte susceptibles de modifier l'encodage? Ou des types MIME non-texte dans l'en-tête? Défini dans votre serveur Web, web.config ou le contrôleur (ou tout filtre d'action/d'autorisation)? Quel est l'en-tête complet de la réponse HTTP? –

Répondre

29

Très probablement l'écran vous montrant est occasionnée par le codage GZip dans votre code. Vous appliquez probablement un Response.Filter à la classe GZip/DeflateStream et avez l'intention d'encoder votre contenu, mais une erreur se produit et ASP.NET efface vos en-têtes, mais laisse le filtre intact. Le résultat est que votre contenu est encodé en GZip mais que le navigateur ne le décode pas car l'en-tête Content-Encoding n'est pas défini.

Pour résoudre ce problème, ajouter:

Response.Filter = null 

dans votre routine Application_Error en haut pour forcer tous les filtres repsonse à effacer.

Une autre chose qui peut vous bousiller est OutputCaching de contenu GZipped. Si un OutputCaching est appliqué, assurez-vous que vous avez l'option VaryByCustom pour autoriser les différents types d'encodage (aucun, Gzip, Deflate le plus probable).

+++ Rick ---

+0

Super! merci un million! – vtortola

+2

Je ne pouvais pas y croire quand j'ai trouvé cette réponse, je pensais que c'était fini quand j'ai vu ça servi - je n'ai jamais été aussi heureux de voir le YSOD. –

+0

Merde. Bonne réponse, mais j'obtiens ce problème précis et ce n'est pas lié au GZip. –

Questions connexes