2011-10-30 90 views
1

我在iis7上運行一個asp.net mvc網站,在開發環境中使用iis express,當我的某個視圖發生異常時,瀏覽器在文本編輯器中返回一些看起來像二進制文件的東西。asp.net mvc錯誤沒有顯示ysod

它不產生正常的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

你試過調試嗎?單步執行你的代碼,或者至少在代碼的開頭設置一個你認爲會導致這個問題的斷點? – 2011-10-30 02:08:56

+0

嘿,即時通訊不是在實際的異常後,我想知道爲什麼當一個異常拋出時,渲染視圖模板它不顯示我傳統的黃色屏幕 – boz

回答

0

這是因爲您沒有處理request.Headers [「Accept-Encoding」]的所有/默認情況。你有一個「if/else if」,其他情況下沒有其他處理。查看http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html中的所有可能值。然後爲未被if/else if捕獲的請求添加默認處理程序。另外,您可能想要使用.ToLower並僅測試小寫值。