Czy ktoś używa Elmah do wysyłania wyjątków pocztą e-mail? Mam skonfigurowane rejestrowanie Elmah za pośrednictwem SQL Server i mogę wyświetlić stronę błędów za pośrednictwem strony Elmah.axd, ale nie mogę uruchomić składnika poczty e-mail. Chodzi o to, aby otrzymać powiadomienie e-mail, abyśmy mogli szybciej reagować na wyjątki. Oto mój web.config (pominięto niepotrzebne sekcje), w którym wszystkie poufne dane zostały zastąpione przez * * *. Nawet jeśli określam serwer, z którym mam się połączyć, czy usługa SMTP musi być uruchomiona na komputerze lokalnym?
<?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>
Tak, jeśli nie korzystasz ze zdalnego serwera SMTP, musisz skonfigurować serwer SMTP lokalnie. Możesz również skonfigurować pocztę e-mail dla elmah w pliku web.config w następujący sposób:
<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>
źródło
Sam użyłem Elmah w tej konfiguracji i musiałem ustawić serwer z lokalnym SMTP. Jest to prosta instalacja na lokalnym serwerze IIS. To powinno załatwić sprawę.
Słuszna uwaga powyżej, potrzebujesz modułu errorMail, ALE jeśli nie używasz zdalnego serwera SMTP, potrzebujesz SMTP lokalnie, tylko dla wyjaśnienia.
źródło