2010-10-18 52 views
19

因爲我上載的ASP.NET MVC應用程序1到服務器的更新版本中,Yellow Screen of Death已更改爲這樣的事情:ASP.NET MVC:在錯誤頁面奇怪的字符

I�%&/m�{J�J��t�� $ @ IG#)* EVE 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-

當訪問頁面時h通過遠程桌面(Windows Server 2008 R2,IE8)直接在服務器上發生錯誤,IE甚至會嘗試下載響應,但會出現錯誤(消息框)。

有人遇到過這個嗎?任何想法如何解決這個問題?

我也發現了這個問題,這似乎是很simliar,但遺憾的是並沒有被現在回答:ASP.NET MVC app displaying weird characters

+0

您可以使用Fiddler或Firebug來查看響應嗎?另外,檢查事件日誌; .NET應該在那裏報告錯誤。 – mkchandler 2010-10-18 20:41:39

+0

Fiddler顯示與瀏覽器相同的響應。該錯誤是一個簡單的「例外」。在這種情況下,我故意拋出它,但我得到了與其他異常類型相同的結果。 – davehauser 2010-10-18 22:39:58

+0

您是否有任何可能會更改編碼的文化或文本編碼類型集?或在標題中使用非文本MIME類型?在您的Web服務器,web.config或控制器(或任何操作/授權過濾器)中設置?什麼是HTTP響應的完整標題? – 2011-02-21 16:56:31

回答

29

最有可能你正在展示由gzip編碼在你的代碼引起的畫面。您可能正在將Response.Filter應用於GZip/DeflateStream類,並打算對您的內容進行編碼,但會發生錯誤,並且ASP.NET會清除您的標題,但保留過濾器的完整性。結果是,您的內容是GZip編碼的,但瀏覽器不會對其進行解碼,因爲Content-Encoding標頭未設置。

要解決此插件:

Response.Filter = null 

到您的Application_Error日常頂部,迫使任何Repsonse過濾器來清除。

另一件可以讓你感到困擾的事情就是GZipped內容的OutputCaching。如果應用了任何OutputCaching,請確保您有VaryByCustom選項以允許使用不同的編碼類型(無,Gzip,Deflate最有可能)。

+++ Rick ---

+0

太棒了!太感謝了! – vtortola 2012-02-21 12:51:25

+2

當我發現這個答案時,我不相信它,當我看到這個答案時,我認爲這是遊戲結束 - 我從來沒有很高興看到YSOD。 – 2012-09-07 19:02:35

+0

垃圾。好的答案,但我得到這個確切的問題,它不是GZip相關。 – 2013-09-11 21:41:30