2011-06-22 40 views
0

我試圖調試一個奇怪的問題,我遇到了一個MVC2解決方案,我從以前的開發人員繼承。如何在MVC2中跟蹤服務器錯誤的生命週期?

問題是,例如,如果我從Site.Master中刪除必要的分號,當我嘗試運行該網站時,看不到相應的「服務器錯誤」頁面。相反,我看到全屏的垃圾字符。 IE提示打開/保存文件,而不是默認渲染垃圾文本 - 但是如果你打開,你會看到相同的垃圾。

我已經使用Firebug探索了一下,但我沒有看到任何超級有用的東西。我只能假設一段代碼需要有效的標記,接收到無效的標記,併發出由於此無效標記而編碼不同的響應。

雖然這不會發生在示例項目上,但僅適用於此開發應用程序。當無效標記運行時,我不知道發生了什麼。有關如何進一步追蹤此問題的任何建議?

Example

編輯:未啓用

  • 自定義錯誤處理。
  • 在/ Views/Shared中有一個「Error.aspx」頁面,排除它似乎對項目沒有任何作用。
  • 沒有OnException控制器擴展。
  • 我試過評論Master Page的所有內容,然後拋出一個服務器錯誤 - 仍然會產生垃圾。
  • 看着Global.asax並沒有看到任何不尋常的東西。
  • 撇去網絡配置。它相當大。我查找有關錯誤的信息,除了注意到自定義錯誤處理未啓用之外,沒有看到任何其他信息。

編輯2:這是代碼導致的問題。我不確定爲什麼,但我想我會把它發佈爲科學。

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

你壓縮你的網頁(即gzip)嗎?確保你的網頁沒有被壓縮...

+0

!我絕對記得在某處看到GZIP!讓我搜索! –

+0

你贏了所有的COOKIES。 –