2008-08-29 15 views
83

क्या कोई ईमेल के माध्यम से अपवाद भेजने के लिए एल्मा का उपयोग कर रहा है? मुझे एल्मह लॉगिंग एसक्यूएल सर्वर के माध्यम से स्थापित किया गया है, और Elmah.axd पेज के माध्यम से त्रुटियों को देख सकता है, लेकिन मैं ईमेल घटक काम करने में असमर्थ हूं। यहां ईमेल सूचना प्राप्त करने का विचार है ताकि हम अपवादों के लिए अधिक तेज़ी से प्रतिक्रिया दे सकें। यहां मेरे web.config (अनावश्यक खंड छोड़े गए हैं), सभी संवेदनशील डेटा * * * द्वारा प्रतिस्थापित किए गए हैं। भले ही मैं कनेक्ट करने के लिए एक सर्वर निर्दिष्ट कर रहा हूं, क्या स्थानीय मशीन पर एसएमटीपी सेवा चलाना आवश्यक है?एल्मा से ईमेल भेजें?

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

आपको त्रुटि मेल httpModule की आवश्यकता है। यदि आप किसी दूरस्थ एसएमटीपी सर्वर (जो ऐसा लगता है कि आप कर रहे हैं) आप सर्वर पर एसएमटीपी की जरूरत नहीं है उपयोग कर रहे हैं

<httpModules> अनुभाग

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

अंदर इस पंक्ति जोड़ें।

+0

वहाँ दैनिक काम कॉन्फ़िगर करने के लिए समेकित त्रुटियों को भेजने के लिए एक रास्ता है: आप भी इस प्रकार web.config में elmah के लिए ईमेल कॉन्फ़िगर कर सकते हैं? –

5

मैंने इस कॉन्फ़िगरेशन में स्वयं को एल्मा का उपयोग किया है और मुझे स्थानीय रूप से एसएमटीपी के साथ सर्वर स्थापित करना पड़ा। यह स्थानीय आईआईएस सर्वर पर एक सीधा-आगे स्थापित है। यह काम कर जाना चाहिए।

ऊपर अच्छा बिंदु, आपको त्रुटि मॉड्यूल की आवश्यकता है लेकिन अगर आप रिमोट एसएमटीपी सर्वर का उपयोग नहीं कर रहे हैं तो आपको स्पष्टीकरण के लिए स्थानीय रूप से एसएमटीपी की आवश्यकता है।

62

हां, यदि आप रिमोट एसएमटीपी सर्वर का उपयोग नहीं कर रहे हैं तो आपके पास स्थानीय रूप से कॉन्फ़िगर किया गया SMTP सर्वर होना चाहिए।

<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

यह बहुत अच्छा काम किया। मुझे एहसास नहीं हुआ कि ईएलएमएएच मानक मेल सेटिंग्स अनुभाग में हुक कर सकता है। SmtpPort = "0" विशेषता अजीब तरह का है। –

+1

smtpPort = "0" की आवश्यकता नहीं प्रतीत होती है क्योंकि यह system.net के तहत निर्दिष्ट पोर्ट का उपयोग करता है; विकास सर्वर के साथ चलते समय मुझे एसएसएल = "झूठी" का उपयोग करना पड़ा था, अन्यथा यह सर्वर को क्रैश करेगा (शायद कारण है कि मैंने एसएसएल सेट नहीं किया है) –

+0

मुझे तत्वों का क्रम महत्वपूर्ण होना चाहिए। Elmah FAILED के बाद system.net निर्दिष्ट। ईएलएमएएच सिस्टम ने काम किया जैसे किसी मेल सर्वर को परिभाषित नहीं किया गया था। System.net को पहले रखना इसे काम करता है। –

संबंधित मुद्दे