2010-10-18 6 views
19

Da ich eine aktualisierte Version einer ASP.NET MVC-1-Anwendung auf den Server hochgeladen haben die Yellow Screen of Death zu so etwas wie dies geändert:ASP.NET MVC: Wirr Zeichen in Fehlerseite

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-

Beim Zugriff auf Seiten mit h Fehler direkt auf dem Server über Remotedesktop (Windows Server 2008 R2, IE8), IE versucht sogar, die Antwort herunterzuladen, aber es ist ein Fehler (Meldungsfeld).

Ist Ihnen jemand schon einmal begegnet? Irgendeine Idee, wie man das löst?

Ich fand auch diese Frage, die sehr simliar zu sein scheint, aber leider inzwischen beantwortet wurde nicht: gzip-Codierung wird verursacht in Ihrem Code ASP.NET MVC app displaying weird characters

+0

Können Sie Fiddler oder Firebug verwenden, um die Antwort zu sehen? Überprüfen Sie auch das Ereignisprotokoll; .NET sollte den Fehler dort melden. – mkchandler

+0

Fiddler zeigt die gleiche Antwort wie der Browser. Der Fehler ist eine einfache "Ausnahme". Ich habe es absichtlich in diesem Fall geworfen, aber ich habe das gleiche Ergebnis mit anderen Ausnahmetypen erhalten. – davehauser

+0

Haben Sie Kultur- oder Textkodierungstypen festgelegt, die die Kodierung ändern könnten? Oder Nicht-Text-MIME-Typen in der Kopfzeile? Auf Ihrem Webserver, web.config oder dem Controller (oder einem beliebigen Aktions-/Autorisierungsfilter) festgelegt? Was ist der vollständige Header der HTTP-Antwort? –

Antwort

29

Höchstwahrscheinlich wird der Bildschirm Sie zeigt. Sie wenden wahrscheinlich einen Response.Filter auf die GZip/DeflateStream-Klasse an und beabsichtigen, Ihren Inhalt zu codieren, aber dann tritt ein Fehler auf und ASP.NET löscht Ihre Header, lässt aber den Filter intakt. Das Ergebnis ist, dass Ihr Inhalt GZip-codiert ist, aber der Browser entschlüsselt ihn nicht, weil der Content-Encoding-Header nicht festgelegt ist.

dieses Add Um dies zu beheben:

Response.Filter = null 

in Ihre Application_Error Routine an der Spitze keine repsonse Filter zu zwingen, aus zu löschen.

Eine andere Sache, die Sie vermasseln kann, ist OutputCaching von GZipped Inhalt. Wenn OutputCaching angewendet wird, stellen Sie sicher, dass Sie die Option VaryByCustom haben, um die verschiedenen Codierungsarten zuzulassen (keine, Gzip, Deflate am wahrscheinlichsten).

+++ Rick ---

+0

Großartig! tausend Dank! – vtortola

+2

Ich konnte es nicht glauben, als ich diese Antwort fand, ich dachte, es war ein Spiel vorbei, als ich sah, dass das serviert wurde - ich war noch nie so glücklich, das YSOD zu sehen. –

+0

Mist. Gute Antwort, aber ich bekomme genau dieses Problem und es ist nicht mit GZip verwandt. –