Elmah에서 이메일을 보내시겠습니까?


87

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>

답변:


79

ErrorMail httpModule이 필요합니다.

<httpModules> 섹션 안에이 줄을 추가합니다.

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

원격 SMTP 서버를 사용하는 경우 (당신처럼 보이는) 서버에 SMTP가 필요하지 않습니다.


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

65

예, 원격 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"속성이 좀 이상합니다.
Ben Mills

1
smtpPort = "0"은 system.net에 지정된 포트를 사용하므로 필요하지 않은 것 같습니다. 개발 서버와 함께 실행하는 동안 나는 useSsl = "false"로 설정했다 그렇지 않으면 (나는 SSL을 설정하지 않은 아마 원인) 서버를 충돌 할
Razvan 보낸 플라 비우스 팬더

요소의 순서가 중요하다는 것을 알았습니다. elmah FAILED 후 system.net 지정. ELMAH 시스템은 메일 서버가 정의되지 않은 것처럼 작동했습니다. system.net을 먼저 넣으면 제대로 작동했습니다.
Mark Meuer 2015

위의 설정을 사용하면 web.config 파일에 액세스하는 사람이 내 이메일 비밀번호를 알 수 있습니까?
Unbreakable

5

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

위의 좋은 점은 errorMail 모듈이 필요하지만 원격 SMTP 서버를 사용하지 않는 경우에는 설명을 위해 로컬로 SMTP가 필요합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.