ASP.NET MVC: странные символы на странице ошибки - PullRequest
20 голосов
/ 18 октября 2010

Поскольку я загрузил обновленную версию приложения ASP.NET MVC 1 на сервер, Желтый Экран Смерти изменился примерно так:

I�%&/m�{J�J��t�� $ @ Ig #) * ЕВА] F @ 흼 {{; N '\ FDL? !? Jɞ ~ |? "Ey ') = y6hͼhR Lw | 2 = Ez < 7: 5 <+ Оу <code>��:� �T����W�v�<[��~2�g�2��?�ʋ�y�hYՋ������t� _N���M�l�����{�,��Xn���Q�}�����*g�������7�� ~� j'u> K { IW4> Uw | = -fYzR-

При доступе к страницам с ошибками непосредственно на сервере через удаленный рабочий стол (Windows Server 2008 R2, IE8) IE даже пытается загрузить ответ, но получает сообщение об ошибке (окно сообщения).

Кто-нибудь сталкивался с этим раньше? Есть идеи, как это решить?

Я также нашел этот вопрос, который кажется очень похожим, но, к сожалению, до сих пор не получен ответ: Приложение ASP.NET MVC, отображающее странные символы

1 Ответ

32 голосов
/ 01 мая 2011

Скорее всего, отображаемый экран вызван кодировкой GZip в вашем коде. Возможно, вы применяете Response.Filter к классу GZip / DeflateStream и намереваетесь кодировать ваш контент, но затем возникает ошибка, и ASP.NET очищает ваши заголовки, но оставляет фильтр нетронутым. В результате ваш контент кодируется в GZip, но браузер не декодирует его, потому что заголовок Content-Encoding не установлен.

Чтобы исправить это, добавьте:

Response.Filter = null

в вашей подпрограмме Application_Error в верхней части, чтобы заставить все фильтры Repsonse очищаться.

Еще одна вещь, которая может вас испортить - это OutputCaching содержимого GZipped. Если применяется какое-либо OutputCaching, убедитесь, что у вас есть опция VaryByCustom, чтобы разрешить разные типы кодирования (нет, Gzip, Deflate, скорее всего).

+++ Рик ---

...