2011-11-16 43 views
3

我注意到,如果視圖中存在編譯錯誤並且自定義錯誤已打開,則框架不會在'global.cs'中激發Application_Error(object sender, EventArgs e),或重定向到配置設置中的defaultRedirect網址。當視圖無法編譯時,不會重定向到錯誤頁面

相反,它加載母版頁,更改標題到錯誤,並把下面

<h2> Sorry, an error occurred while processing your request. </h2> 

,其視圖含量應。

有沒有人知道一種方法來強制它像處理其他任何錯誤一樣處理這些錯誤?

PS我知道在視圖中不應該有任何編譯器錯誤,但我們有一個視圖文件被破壞並且沒有被發現海峽的情況,因爲日誌代碼在Application_Error(object sender, EventArgs e)中。

回答

0

找到它了。我使用錯誤控制器和它自己的視圖來處理錯誤。

經過一番搔頭之後,我發現我們仍然在Views \ Shared目錄下有默認的Error頁面。這是呈現的內容。爲什麼它使用這個而不去web.config的defaultRedirect部分的url或者調用Application_Error(object sender,EventArgs e)我不知道。

當我刪除它時,它開始像所有其他異常一樣處理編譯器異常。

1

你使用句柄錯誤屬性嗎?

[HandleError] 

我把屬性放在控制器級而不是單獨的Action方法。然後在控制器內部,我重寫OnException事件來捕獲錯誤。

protected override void OnException(ExceptionContext filterContext) 
    { 
     EventLog.WriteEntry("MyAppError", filterContext.Exception.ToString(), EventLogEntryType.Error); 
     base.OnException(filterContext); 
    } 

然後我不重寫Application_Error事件。我仍然使用Views \ Shared目錄中的Error頁面

+0

歡呼你的答案,它使我找到我的解決方案。 – Magpie

相關問題