2010-10-18 43 views
19

Dato che ho caricato una versione aggiornata di un ASP.NET MVC 1 applicazione al server, il Yellow Screen of Death è cambiato a qualcosa di simile:ASP.NET MVC: strani caratteri a pagina di errore

I�%&/m�{J�J��t�� $ @ iG #) * Eva] f @ 흼 {{; N '\ fdlJɞ ~ |?!?? " 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-

Quando si accede alle pagine con h errori direttamente sul server tramite Desktop remoto (Windows Server 2008 R2, IE8), IE tenta persino di scaricare la risposta ma viene visualizzato un errore (finestra di messaggio).

Qualcuno ha riscontrato questo prima? Qualche idea su come risolvere questo?

ho trovato anche questa domanda, che sembra essere molto simliar, ma purtroppo non ha ricevuto risposta da ora: ASP.NET MVC app displaying weird characters

+0

È possibile utilizzare Fiddler o Firebug per visualizzare la risposta? Inoltre, controlla il registro degli eventi; .NET dovrebbe riportare l'errore lì. – mkchandler

+0

Fiddler mostra la stessa risposta del browser. L'errore è un semplice 'Exception'. L'ho lanciato intenzionalmente in questo caso, ma ho ottenuto lo stesso risultato con altri tipi di eccezione. – davehauser

+0

Avete impostato un tipo di codifica di cultura o di testo che potrebbe modificare la codifica? O tipi MIME non di testo nell'intestazione? Impostare nel server Web, web.config o nel controller (o in qualsiasi filtro azione/autorizzazione)? Qual è l'intestazione completa della risposta HTTP? –

risposta

29

Molto probabilmente lo schermo si sta mostrando è causato da codifica GZip nel codice. Probabilmente stai applicando un Response.Filter alla classe GZip/DeflateStream e intendi codificare il tuo contenuto, ma poi si verifica un errore e ASP.NET cancella le tue intestazioni, ma lascia intatto il filtro. Il risultato è che il tuo contenuto è codificato con GZip ma il browser non lo decodifica perché l'intestazione Content-Encoding non è impostata.

Per fissare questo componente aggiuntivo:

Response.Filter = null 

nella vostra routine Application_Error in alto per costringere eventuali filtri repsonse per cancellare.

Un'altra cosa che può rovinarvi è OutputCaching di contenuti GZipped. Se viene applicato un OutputCaching, assicurarsi di avere l'opzione VaryByCustom per consentire i diversi tipi di codifica (nessuno, Gzip, Deflate molto probabilmente).

+++ Rick ---

+0

Ottimo! Grazie mille! – vtortola

+2

Non potevo crederci quando ho trovato questa risposta, ho pensato che fosse finita quando ho visto quello servito - non sono mai stato così felice di vedere il YSOD. –

+0

Crap. Buona risposta, ma sto ricevendo questo problema esatto e non è correlato a GZip. –

Problemi correlati