網站偵錯紀錄-Elmah-設定小記錄
Elmah的安裝及其他設定都可以看參考資料就可以上手,這篇只是記錄在使用上遇到的問題,另外找到的解決方式:
一、要如何改變Elmah.axd的瀏覽路徑
因為通常Elmah.axd的瀏覽路徑為【http://Server IP/elmah.axd】,但如果要改成連【http://Server IP/Test/elmah.axd】只要改變下面
Web.config 屬性名稱叫path的部分,改成想要瀏覽網址即可,並不需要另外建資料夾。
<location path="Test/elmah.axd" inheritInChildApplications="false"> <system.web> <httpHandlers> <add verb="POST,GET,HEAD" path="Test/elmah.axd" type="Elmah.ErrorLogPageFactory, Elmah" /> </httpHandlers> <!-- See http://code.google.com/p/elmah/wiki/SecuringErrorLogPages for more information on using ASP.NET authorization securing ELMAH. <authorization> <allow roles="admin" /> <deny users="*" /> </authorization> --> </system.web> <system.webServer> <handlers> <add name="ELMAH" verb="POST,GET,HEAD" path="Test/elmah.axd" type="Elmah.ErrorLogPageFactory, Elmah" preCondition="integratedMode" /> </handlers> </system.webServer> </location>
二、程式中用了Try Catch,但要如何還是讓Elmah去抓到錯誤
為何會有這個問題,是因為應用在ashx或與其他系統對接的程式,基本是都會定義好回傳的錯誤代碼是甚麼,但如果用了Try Catch之後,
又要用Elmah去留住錯誤訊息的話,就必須在Catch區塊內加上下面這段指令,就可以正常使用Elmah。
解決方案來源:
http://aspnet2share.blogspot.tw/2011/11/nuget-nuget-msdn-nuget-visual-studio.html
http://stackoverflow.com/questions/7441062/how-to-use-elmah-to-manually-log-errors
{ Elmah.ErrorSignal.FromCurrentContext().Raise(ex); }
三、Elmah在IIS 7.5以上,發生了錯誤,該如何處理
這個問題就好妙了,原來在開發時用的程式開發伺服器是用iis 6,而iis express 則是IIS 7.5,當Elmah要在IIS 7.5(IIS EXPRESS)以上執行,
就必須更改web.config的設定,在system.webServer下多增加remove ErrorLog 及ErrorMail的部分,才能正常Work,解決方式如下:
解決方案來源:http://stackoverflow.com/questions/960234/elmah-basic-setup-questions-issues
更改後web.config設定檔,如下所示:
<?xml version="1.0"?><configuration> <system.web> <httpModules> <add name="ErrorLog" type="Elmah.ErrorLogModule, Elmah"/> <add name="ErrorMail" type="Elmah.ErrorMailModule, Elmah" /> </httpModules> </system.web> <system.webServer> <validation validateIntegratedModeConfiguration="false" /> <modules runAllManagedModulesForAllRequests="true"> <remove name="ErrorLog" /> <remove name="ErrorMail" /> <add name="ErrorLog" type="Elmah.ErrorLogModule, Elmah" preCondition="managedHandler" /> <add name="ErrorMail" type="Elmah.ErrorMailModule, Elmah" preCondition="managedHandler" /> </modules> </system.webServer> </configuration>
參考資料:
http://blog.miniasp.com/post/2013/03/12/ASPNET-MVC-4-and-ELMAH-Integration.aspx
http://kevintsengtw.blogspot.tw/p/blog-page_12.html#.UlwuVlCfjMc
http://huan-lin.blogspot.com/2013/02/something-about-elmah-error-logging.html
ASP.NET保安系列 - 關於elmah.axd的安全設定: http://blog.darkthread.net/post-2011-03-10-elmah-axd-security.aspx
設定Elmah ErrorFilter篩選器去過濾不要看到的錯誤資訊:http://coding.anyun.tw/2012/02/23/elmah-errorfilter/