2008-08-29 38 views
83

Có ai đang sử dụng Elmah để gửi ngoại lệ qua email không? Tôi đã có đăng nhập Elmah thiết lập thông qua SQL Server, và có thể xem các trang lỗi thông qua trang Elmah.axd, nhưng tôi không thể nhận được các thành phần email làm việc. Ý tưởng ở đây là nhận thông báo qua email để chúng tôi có thể phản ứng nhanh hơn với các ngoại lệ. Đây là web.config của tôi (các phần không cần thiết bị bỏ qua), với tất cả các dữ liệu nhạy cảm được thay thế bởi * * *. Mặc dù tôi đang chỉ định một máy chủ để kết nối, dịch vụ SMTP có cần chạy trên máy cục bộ không?Gửi email từ Elmah?

<?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="[email protected]" 
      to="[email protected]" 
      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> 

Trả lời

78

Bạn cần httpModule ErrorMail.

thêm dòng này bên trong <httpModules> phần

<add name="ErrorMail" type="Elmah.ErrorMailModule, Elmah" /> 

Nếu bạn đang sử dụng một máy chủ SMTP từ xa (mà có vẻ như bạn đang có) bạn không cần SMTP trên máy chủ.

+0

Có cách nào để định cấu hình công việc hàng ngày để gửi lỗi tổng hợp không? –

5

Tôi đã sử dụng bản thân Elmah trong cấu hình này và tôi đã phải thiết lập máy chủ bằng SMTP cục bộ. Nó là một cài đặt thẳng về phía trước trên máy chủ IIS cục bộ của bạn. Cái này cần phải dùng mẹo.

Điểm tốt ở trên, bạn cần mô-đun errorMail NHƯNG nếu bạn không sử dụng máy chủ SMTP từ xa bạn cần SMTP cục bộ, chỉ để làm rõ.

62

Có, nếu bạn không sử dụng máy chủ SMTP từ xa, bạn phải có máy chủ SMTP được cấu hình cục bộ. Bạn cũng có thể định cấu hình email cho elmah trong web.config như sau:

<configSections> 
    <sectionGroup name="elmah"> 
    <section name="errorMail" requirePermission="false" type="Elmah.ErrorMailSectionHandler, Elmah"> 
    </sectionGroup> 
</configSections> 

<elmah> 
    <errorMail from="from Mail Address" to="to mail address" 
       async="true" smtpPort="0" useSsl="true" /> 
</elmah> 

<system.net> 
    <mailSettings> 
     <smtp deliveryMethod ="Network"> 
     <network host="smtp.gmail.com" port="587" userName="yourgmailEmailAddress" password="yourGmailEmailPassword" /> 
     </smtp> 
    </mailSettings> 
</system.net> 
+4

Điều này làm việc tuyệt vời. Tôi đã không nhận ra rằng ELMAH có thể móc vào phần mailSettings tiêu chuẩn. Thuộc tính smtpPort = "0" là loại kỳ lạ. –

+1

smtpPort = "0" dường như không cần thiết vì nó sử dụng cổng được chỉ định trong system.net; trong khi chạy với máy chủ phát triển, tôi phải đặt useSsl = "false" nếu không nó sẽ làm hỏng máy chủ (có thể là do tôi không thiết lập SSL) –

+0

Tôi đã tìm thấy thứ tự các phần tử quan trọng. Chỉ định system.net SAU KHI elmah FAILED. Hệ thống ELMAH hoạt động như không có máy chủ thư nào được xác định. Đưa system.net đầu tiên làm cho nó hoạt động. –