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