asp.net mvc错误没有显示ysod

时间:2011-10-30 02:00:05

标签: asp.net-mvc iis-7

我在iis7上运行asp.net mvc网站,在dev中使用iis express,当我的一个视图中出现异常时,浏览器会在文本编辑器中返回类似二进制文件的内容。

它没有产生正常的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 :(得分:0)

这是因为您没有处理request.Headers [" Accept-Encoding"]的所有/默认情况。你有一个" if / else if"没有其他处理其他情况。查看http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html中的所有可能值。然后为if / else if未捕获的请求添加默认处理程序。此外,您可能希望使用.ToLower并仅重新测试小写值。