ELMAH不从localhost发送电子邮件

时间:2011-02-12 05:07:18

标签: c# asp.net asp.net-mvc elmah

我正在尝试为我的应用中的错误记录设置ELMAH。这是我的web.config:

<configuration>
    <configSections>
        <sectionGroup name="elmah">
            <section name="security" requirePermission="false" type="Elmah.SecuritySectionHandler, 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>
    <elmah>
        <security allowRemoteAccess="0" />
        <errorLog type="Elmah.SqlErrorLog, Elmah" connectionStringName="AppDb" />
        <errorMail from="errors@site.com" to="mail@site.com" subject="Elmah Error" smtpServer="localhost" />
    </elmah>
    <connectionStrings>
        <add name="AppDb" connectionString="Server=***;Database=***;Trusted_Connection=yes;" providerName="System.Data.SqlClient" />
    </connectionStrings>
    <system.web>
        <httpHandlers>
            <add verb="POST,GET,HEAD" path="elmah.axd" type="Elmah.ErrorLogPageFactory, Elmah" />
        </httpHandlers>
        <httpModules>
            <add name="ErrorLog" type="Elmah.ErrorLogModule, Elmah" />
            <add name="ErrorFilter" type="Elmah.ErrorFilterModule, Elmah" />
            <add name="ErrorMail" type="Elmah.ErrorMailModule, Elmah" />
        </httpModules>
        <customErrors mode="Off" defaultRedirect="Error.aspx">
            <error statusCode="403" redirect="NoAccess.htm" />
            <error statusCode="404" redirect="FileNotFound.htm" />
        </customErrors>
    </system.web>
    <system.webServer>
        <validation validateIntegratedModeConfiguration="false" />
        <modules runAllManagedModulesForAllRequests="true">
            <add name="ErrorLog" type="Elmah.ErrorLogModule, Elmah" />
            <add name="ErrorFilter" type="Elmah.ErrorFilterModule, Elmah" />
            <add name="ErrorMail" type="Elmah.ErrorMailModule, Elmah" />
        </modules>
        <handlers>
            <add name="Elmah" verb="POST,GET,HEAD" path="elmah.axd" type="Elmah.ErrorLogPageFactory, Elmah" />
        </handlers>
    </system.webServer>
</configuration>

我的应用程序正在记录数据库中的错误,但未发送电子邮件。

我不知道是不是因为我在我的本地机器上,如果我的web.config错误,或者它是完全不同的东西。

2 个答案:

答案 0 :(得分:4)

我假设您在本地计算机上运行了SMTP服务器?如果您这样做,并且您使用的是IIS 6或更低版本 - 则必须允许从IIS中的本地IP进行路由。这听起来很奇怪,但IIS不知道你的机器是谁,通常也不会从localhost路由。

如果您的本地主机上没有设置SMTP服务器 - 那么这就是您所需要的。有很多免费的用于开发用途 - 比如hMail http://www.hmailserver.com/

答案 1 :(得分:0)

我认为保存为文件保存是安全的,如果正在开发则更方便发送邮件。

<specifiedPickupDirectory> Element (Network Settings)