7

我一直在尋找一些方法來使用ELMaH與ASP.Net MVC,以便我可以使用自定義錯誤頁面的所有例外,包括404s。這種方法使用ELMaH與MVC的氣味?

no shortagequestionsasking如何讓/Shared/Error.aspx在ASP.Net MVC中正常工作 - 無論是否帶有ELMaH。我沒有遇到任何問題,但我覺得我的解決方案與ELMaH一起使用自定義404頁面太簡單了,我不能動搖應該有更多的感覺。

Web.Config中實現的customErrors後,我在HomeController中創建了一個新動作:

public ActionResult PageNotFound() 
{ 
    return null; 
} 

從那裏我在Global.asax文件中增加了一個新的方法來利用ELMAH日誌過濾功能和優勢,讓異常記錄到日誌中,重定向響應返回給上述PageNotFound的ActionResult後:

public void errorLog_Filtering(object sender, ExceptionFilterEventArgs e) 
    { 
     if (e.Exception.GetType().Equals(typeof(HttpException))) 
     { 
      HttpException ex = (HttpException)e.Exception; 
      if (ex.GetHttpCode() == 404) 
       Response.Redirect("/Home/PageNotFound"); 
     } 
    } 

我俯瞰的東西,在默認情況下自帶的MVC(因爲我仍然在尋找我的方式進行了大量的T關於MVC的關注),還是在存在更簡單的解決方案的情況下解決問題?欣賞任何輸入。

+0

有返回沒有實際的看法。我只是讓用戶進入默認的/Shared/Error.aspx頁面。 – 2010-02-08 06:04:05

回答

2

我相信ASP.NET可以爲你處理這種東西,你不一定要調用任何東西來重定向到你的global.asax中的404 Action。見下面的例子。

<configuration> 
    <system.web> 
     <customErrors mode="On"> 
      <error statusCode="404" redirect="/servererrors/404.aspx" /> 
     </customErrors> 
    </system.web> 
</configuration> 

http://www.xefteri.com/articles/show.cfm?id=11

+1

好的。首先,你鏈接到的那篇文章是2002年(!)針對.Net 1.1 webforms開發者的目標受衆撰寫的。但是,你的回答讓我再次看到了我的方法,正如我懷疑的那樣,我過度設計了一些東西。我不需要Global.asax中的errorLog_Filtering事件,但是我需要一個可達的ActionResult。感謝您的意見。 – 2010-02-09 00:39:21

+0

對不起,這篇文章很老,但它的配置方面仍然非常相關。談到asp.net配置時,情況幾乎沒有變化。 – 2010-02-09 18:20:57