Elmah'tan e-posta gönderilsin mi?


87

E-posta yoluyla istisnalar göndermek için Elmah'ı kullanan var mı? Elmah günlüğünü SQL Server aracılığıyla kurdum ve hatalar sayfasını Elmah.axd sayfasından görüntüleyebiliyorum, ancak e-posta bileşenini çalıştıramıyorum. Buradaki fikir, istisnalara daha hızlı tepki verebilmemiz için e-posta bildirimini almaktır. İşte benim web.config (gereksiz bölümler atlandı), tüm hassas veriler * * * ile değiştirildi. Bağlanmak için bir sunucu belirlesem de, SMTP hizmetinin yerel makinede çalışması gerekir mi?

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

Yanıtlar:


79

ErrorMail httpModule'a ihtiyacınız var.

bu satırı <httpModules> bölümünün içine ekleyin

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

Uzak bir SMTP sunucusu kullanıyorsanız (öyle görünüyor ki) sunucuda SMTP'ye ihtiyacınız yoktur.


1
Günlük işi birleştirilmiş hatalar göndermek için yapılandırmanın bir yolu var mı?
Chaitanya Gadkari

65

Evet, uzak SMTP sunucusu kullanmıyorsanız, yerel olarak yapılandırılmış SMTP Sunucunuzun olması gerekir. Ayrıca elmah için e-postayı web.config içinde aşağıdaki gibi yapılandırabilirsiniz:

<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
Bu harika çalıştı. ELMAH'ın standart mailSettings bölümüne bağlanabileceğinin farkında değildim. SmtpPort = "0" özelliği biraz tuhaf.
Ben Mills

1
smtpPort = "0", system.net altında belirtilen bağlantı noktasını kullandığından gerekli görünmüyor; geliştirme sunucusuyla çalışırken, useSsl = "false" ayarlamam gerekiyordu, yoksa sunucuyu çökertebilirdi (muhtemelen SSL ayarlamamama neden olabilir)
Răzvan Flavius ​​Panda

Öğelerin sırasını önemli buldum. Elmah BAŞARISIZ OLDUKTAN SONRA system.net belirtiliyor. ELMAH sistemi, posta sunucusu tanımlanmamış gibi davrandı. System.net'i koymak ilk önce işe yaradı.
Mark Meuer

Yukarıdaki ayarları kullanırsam, web.config dosyasına erişen herkes e-posta parolamı bilecek, değil mi?
Unbreakable

5

Bu konfigürasyonda Elmah'ı kendim kullandım ve sunucuyu SMTP ile yerel olarak kurmak zorunda kaldım. Yerel IIS sunucunuza doğrudan bir kurulumdur. Bu hile yapmalı.

Yukarıdaki güzel nokta, errorMail modülüne ihtiyacınız var ANCAK uzak bir SMTP sunucusu kullanmıyorsanız, sadece açıklığa kavuşturmak için yerel olarak SMTP'ye ihtiyacınız var.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.