2008-08-29 4 views
83

Elmah를 사용하여 이메일을 통해 예외를 보내는 사람이 있습니까? SQL Server를 통해 Elmah 로깅을 설정하고 Elmah.axd 페이지를 통해 오류 페이지를 볼 수 있지만 전자 메일 구성 요소를 작동시킬 수 없습니다. 여기서 아이디어는 전자 메일 알림을 가져와 예외에보다 신속하게 대응할 수 있도록하는 것입니다. 여기에 내 web.config (불필요한 섹션 생략)가 있으며 모든 중요한 데이터는 * * *로 바뀝니다. 연결할 서버를 지정하고 있지만 로컬 컴퓨터에서 SMTP 서비스를 실행해야합니까?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> 

답변

78

ErrorMail httpModule이 필요합니다. 당신이 (당신이 것 같습니다) 원격 SMTP 서버는 서버에 SMTP가 필요하지 않습니다를 사용하는 경우

는 < HttpModules는 > 섹션

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

내부에이 줄을 추가합니다.

+0

통합 된 오류를 보내도록 일별 작업을 구성하는 방법이 있습니까? –

5

이 구성에서 Elmah를 직접 사용했으며 로컬로 SMTP를 설정해야했습니다. 로컬 IIS 서버에 직접 설치할 수 있습니다. 이것은 트릭을해야합니다.

위의 좋은 점은 errorMail 모듈이 필요하지만 로컬 SMTP가 필요한 원격 SMTP 서버를 사용하지 않는 경우 명확하게하기 위해서입니다.

62

예, 원격 SMTP 서버를 사용하지 않는 경우 SMTP 서버를 로컬로 구성해야합니다. 다음과 같이 web.config에서 elmah에 대한 전자 메일을 구성 할 수도 있습니다.

<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

위대한 작품. ELMAH가 표준 mailSettings 섹션에 연결될 수 있다는 것을 알지 못했습니다. smtpPort = "0"속성은 다소 이상합니다. –

+1

smtpPort = "0"은 system.net 아래에 지정된 포트를 사용하므로 필요하지 않습니다. useSsl = "false"로 설정해야하는 개발 서버로 실행하는 동안 서버가 손상 될 수 있습니다 (아마 SSL을 설정하지 않았을 수도 있습니다). –

+0

중요한 요소의 순서를 발견했습니다. elmah FAILED 후에 system.net 지정. 메일 서버가 정의되지 않은 것처럼 ELMAH 시스템이 작동했습니다. 처음으로 system.net을 사용하면 효과가있었습니다. –