Inviare un'e-mail da Elmah?


87

Qualcuno sta usando Elmah per inviare eccezioni via e-mail? Ho configurato la registrazione di Elmah tramite SQL Server e posso visualizzare la pagina degli errori tramite la pagina Elmah.axd, ma non riesco a far funzionare il componente di posta elettronica. L'idea qui è di ricevere la notifica e-mail in modo da poter reagire più rapidamente alle eccezioni. Ecco il mio web.config (sezioni non necessarie omesse), con tutti i dati sensibili sostituiti da * * *. Anche se sto specificando un server a cui connettermi, il servizio SMTP deve essere in esecuzione sulla macchina locale?

<?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>

Risposte:


79

Hai bisogno di ErrorMail httpModule.

aggiungi questa riga all'interno della sezione <httpModules>

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

Se stai usando un server SMTP remoto (che sembra tu sia) non hai bisogno di SMTP sul server.


1
C'è un modo per configurare il lavoro quotidiano per inviare errori consolidati?
Chaitanya Gadkari

65

Sì, se non si utilizza un server SMTP remoto, è necessario che il server SMTP sia configurato localmente. Puoi anche configurare la posta elettronica per elmah in web.config come segue:

<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
Funzionava benissimo. Non mi ero reso conto che ELMAH può collegarsi alla sezione mailSettings standard. L'attributo smtpPort = "0" è un po 'strano.
Ben Mills

1
smtpPort = "0" non sembra essere necessario in quanto utilizza la porta specificata in system.net; durante l'esecuzione con il server di sviluppo ho dovuto impostare useSsl = "false" altrimenti il ​​server si sarebbe bloccato (probabilmente perché non avevo impostato SSL)
Răzvan Flavius ​​Panda

Ho trovato significativo l'ordine degli elementi. Specificare system.net DOPO elmah FAILED. Il sistema ELMAH ha funzionato come se non fosse stato definito alcun server di posta. Mettere system.net prima lo ha fatto funzionare.
Mark Meuer

Se utilizzo le impostazioni di cui sopra, chiunque acceda al file web.config conoscerà la mia password e-mail, giusto?
Unbreakable

5

Ho usato Elmah io stesso in questa configurazione e ho dovuto configurare il server con SMTP localmente. È un'installazione diretta sul tuo server IIS locale. Questo dovrebbe fare il trucco.

Buon punto sopra, è necessario il modulo errorMail MA se non si utilizza un server SMTP remoto è necessario SMTP localmente, solo per chiarire.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.