網站偵錯紀錄-Elmah-設定小記錄

  • 2021
  • 0

網站偵錯紀錄-Elmah-設定小記錄

DotBlog 的標籤:

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/