0
我試圖調試一個奇怪的問題,我遇到了一個MVC2解決方案,我從以前的開發人員繼承。如何在MVC2中跟蹤服務器錯誤的生命週期?
問題是,例如,如果我從Site.Master中刪除必要的分號,當我嘗試運行該網站時,看不到相應的「服務器錯誤」頁面。相反,我看到全屏的垃圾字符。 IE提示打開/保存文件,而不是默認渲染垃圾文本 - 但是如果你打開,你會看到相同的垃圾。
我已經使用Firebug探索了一下,但我沒有看到任何超級有用的東西。我只能假設一段代碼需要有效的標記,接收到無效的標記,併發出由於此無效標記而編碼不同的響應。
雖然這不會發生在示例項目上,但僅適用於此開發應用程序。當無效標記運行時,我不知道發生了什麼。有關如何進一步追蹤此問題的任何建議?
編輯:未啓用
- 自定義錯誤處理。
- 在/ 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);
// }
//}
}
!我絕對記得在某處看到GZIP!讓我搜索! –
你贏了所有的COOKIES。 –