题
是任何人使用Elmah发送的例外情况,通过电子邮件?我Elmah记录设定了通过SQL服务器,并且可以查看的错误页通过Elmah.axd页,但我不能获得电子邮件组件的工作。这里的想法是,获得电子邮件通知,以便我们可以更迅速地应对例外情况。这里是我的网页。config(不必要的sectionss略),与所有的敏感数据取代***.虽然我是指定一个服务器连接,并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 server(其它看起来就像你是)你不需要SMTP在服务器上。
其他提示
是的,如果你不是使用远程SMTP server你必须SMTP Server配置当地。你还可以配置电子邮件elmah在网。配置如下:
<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 server你需要SMTP地,只是为了澄清。
不隶属于 StackOverflow