Кто-нибудь использует 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 = "[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>





Я сам использовал Elmah в этой конфигурации, и мне пришлось настроить сервер с SMTP локально. Это простая установка на локальном сервере IIS. Это должно помочь.
Хороший момент выше, вам нужен модуль errorMail, НО, если вы не используете удаленный SMTP-сервер, вам нужен SMTP локально, просто для пояснения.
Вам нужен ErrorMail httpModule.
добавьте эту строку в
<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 может подключиться к стандартному разделу mailSettings. Атрибут smtpPort = "0" довольно странный.
smtpPort = "0", похоже, не нужен, так как он использует порт, указанный в system.net; при работе с сервером разработки мне пришлось установить useSsl = "false", иначе сервер выйдет из строя (вероятно, из-за того, что я не настроил SSL)
Я обнаружил, что порядок элементов имеет значение. Указание system.net ПОСЛЕ СБОЯ elmah. Система ELMAH действовала так, как будто почтовый сервер не был определен. Размещение system.net первым заставило его работать.
Если я использую вышеуказанные настройки, любой, кто имеет доступ к файлу web.config, будет знать мой пароль электронной почты, верно?
Есть ли способ настроить ежедневное задание для отправки консолидированных ошибок?