سؤال

هل يستخدم أي شخص Elmah لإرسال الاستثناءات عبر البريد الإلكتروني؟لقد قمت بإعداد تسجيل Elmah عبر SQL Server، ويمكنني عرض صفحة الأخطاء عبر صفحة 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>
هل كانت مفيدة؟

المحلول

أنت بحاجة إلى ErrorMail httpModule.

أضف هذا السطر داخل قسم <httpModules>

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

إذا كنت تستخدم خادم SMTP بعيدًا (وهو ما يبدو أنك تستخدمه)، فلن تحتاج إلى SMTP على الخادم.

نصائح أخرى

نعم، إذا كنت لا تستخدم خادم SMTP البعيد، فيجب أن يكون خادم SMTP مكونًا محليًا.يمكنك أيضًا تكوين البريد الإلكتروني لـ elmah في web.config كما يلي:

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

لقد استخدمت Elmah بنفسي في هذا التكوين واضطررت إلى إعداد الخادم باستخدام SMTP محليًا.إنه تثبيت مباشر على خادم IIS المحلي.هذا ينبغي أن تفعل خدعة.

النقطة الجيدة أعلاه، أنت بحاجة إلى وحدة errorMail ولكن إذا كنت لا تستخدم خادم SMTP بعيد، فأنت بحاجة إلى SMTP محليًا، فقط للتوضيح.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top