如何在MVC2中跟踪服务器错误的生命周期?

时间:2011-06-22 16:49:47

标签: asp.net visual-studio-2010 debugging asp.net-mvc-2

我正在尝试调试我从以前的开发人员继承的MVC2解决方案中遇到的一个奇怪的问题。

问题是,例如,如果我从Site.Master中删除了必要的分号,当我尝试运行该站点时,我看不到相应的“服务器错误”页面。相反,我看到一个完整的垃圾字符屏幕。 IE默认提示打开/保存文件而不是渲染垃圾文本 - 但如果打开,则会看到相同的垃圾。

我使用Firebug进行了一些调整,但我没有看到任何超级有用的东西。我只能假设一段代码期望有效标记,接收无效标记,并发出由于此无效标记而编码不同的响应。

但是,这不会发生在示例项目上,仅适用于此开发应用。我不知道运行无效标记时发生了什么。关于如何进一步追踪这个问题的任何建议?

Example

编辑:

  • 未启用自定义错误处理。
  • 在/ Views / Shared下面有一个“Error.aspx”页面,不包括它似乎对项目没有任何作用。
  • 没有OnException控制器扩展。
  • 我尝试将主页中的所有内容评论出来,然后抛出服务器错误 - 仍然会产生垃圾。
  • 看着Global.asax并没有看到任何与众不同的东西。
  • 浏览网页配置。它相当大。我查找了有关错误的内容,除了注意到未启用自定义错误处理外,没有看到任何其他内容。

EDIT2:这是造成问题的代码。我不知道为什么,但我想我会把它发布给科学。

public class CompressionFilterAttribute : ActionFilterAttribute
{
    //public override void OnActionExecuting(ActionExecutingContext context)
    //{
    //    HttpRequestBase request = context.HttpContext.Request;

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

    //    if (string.IsNullOrEmpty(acceptEncoding))
    //        return;

    //    acceptEncoding = acceptEncoding.ToUpperInvariant();

    //    HttpResponseBase response = context.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 :(得分:1)

您在压缩页面(例如gzip)吗?确保您的页面未压缩...