Ошибка asp.net MVC не показывает ysod - PullRequest
1 голос
/ 30 октября 2011

Я управляю сайтом asp.net mvc на iis7, использую iis express в dev, и когда в одном из моих представлений возникает исключение, браузер возвращает что-то похожее на двоичное в текстовом редакторе.

Егоне генерирует нормальный ysod.

Кто-нибудь видел это раньше?

Приветствия, Байрон

РЕДАКТИРОВАТЬ

Это связано с моимфильтр действия сжатия.Похоже, что ответ не «распаковывается», если в представлении возникает исключение.

public class EnableCompression : ActionFilterAttribute {

    public override void OnActionExecuting(ActionExecutingContext filterContext) {

        HttpRequestBase request = filterContext.HttpContext.Request;

        string acceptEncoding = request.Headers["Accept-Encoding"];

        if (string.IsNullOrEmpty(acceptEncoding)) return;

        acceptEncoding = acceptEncoding.ToUpperInvariant();

        HttpResponseBase response = filterContext.HttpContext.Response;

        if (acceptEncoding.Contains("GZIP")) {
            response.AppendHeader("Content-encoding", "gzip");
            response.Filter = new GZipStream(response.Filter, CompressionMode.Compress);
        } else if (acceptEncoding.Contains("DEFLATE")) {
            response.AppendHeader("Content-encoding", "deflate");
            response.Filter = new DeflateStream(response.Filter, CompressionMode.Compress);
        }
    }
}

1 Ответ

0 голосов
/ 27 октября 2012

это потому, что вы не обрабатываете все / стандартные случаи для запроса. Заголовки ["Accept-Encoding"]. У вас есть «если / еще, если» без других обработок для других случаев. См. Все возможные значения в http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html. Затем добавьте обработчик по умолчанию для запросов, не перехваченных вашим if / else if. Кроме того, вы можете использовать .ToLower и проверять снова только строчные значения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...