Dot-Net

從 Elmah 發送電子郵件?

  • August 29, 2008

是否有人使用 Elmah 通過電子郵件發送異常?我已經通過 SQL Server 設置了 Elmah 日誌記錄,並且可以通過 Elmah.axd 頁面查看錯誤頁面,但我無法讓電子郵件組件正常工作。這裡的想法是獲取電子郵件通知,以便我們可以更快地對異常做出反應。這是我的 web.config(省略了不必要的部分),所有敏感數據都替換為 * * *。即使我指定了要連接的伺服器,SMTP 服務是否需要在本地電腦上執行?

<?xml version="1.0"?>
<configuration>
   <configSections>
       <sectionGroup name="elmah">
           <section name="errorLog" requirePermission="false" type="Elmah.ErrorLogSectionHandler, Elmah"/>
           <section name="errorMail" requirePermission="false" type="Elmah.ErrorMailSectionHandler, Elmah"/>
           <section name="errorFilter" requirePermission="false" type="Elmah.ErrorFilterSectionHandler, Elmah"/>
       </sectionGroup>
   </configSections>
   <appSettings/>
   <connectionStrings>
       <add name="elmah-sql" connectionString="Data Source=***;Initial Catalog=***;Persist Security Info=True;User ID=***;Password=***" />
   </connectionStrings>

   <elmah>
       <errorLog type="Elmah.SqlErrorLog, Elmah" connectionStringName="elmah-sql"   >
       </errorLog>
       <errorMail from="test@test.com"
          to="test@test.com"
          subject="Application Exception"
          async="false"
          smtpPort="25"
          smtpServer="***"
          userName="***"
          password="***">
       </errorMail>
   </elmah>

   <system.web>        
       <customErrors mode="RemoteOnly" defaultRedirect="CustomError.aspx">
           <error statusCode="403" redirect="NotAuthorized.aspx" />
           <!--<error statusCode="404" redirect="FileNotFound.htm" />-->
       </customErrors>
       <httpHandlers>
           <remove verb="*" path="*.asmx"/>
           <add verb="*" path="*.asmx" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
           <add verb="*" path="*_AppService.axd" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
           <add verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" validate="false"/>
           <add verb="POST,GET,HEAD" path="elmah.axd" type="Elmah.ErrorLogPageFactory, Elmah" />
       </httpHandlers>
       <httpModules>
           <add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
           <add name="ErrorLog" type="Elmah.ErrorLogModule, Elmah"/>
       </httpModules>
   </system.web>

</configuration>

您需要 ErrorMail httpModule。

在 <httpModules> 部分中添加這一行

&lt;add name="ErrorMail" type="Elmah.ErrorMailModule, Elmah" /&gt;

如果您使用的是遠端 SMTP 伺服器(看起來就是這樣),則伺服器上不需要 SMTP。

引用自:https://stackoverflow.com/questions/34401