【问题标题】:ELMAH works on local machine, but not on production [duplicate]ELMAH 适用于本地机器,但不适用于生产 [重复]
【发布时间】:2011-08-15 19:12:00
【问题描述】:

设置简单,我正在使用 ELMAH 记录异常并向我发送电子邮件。在我的本地机器上一切正常,但是当我将更改放在生产服务器上时,不会记录错误,也不会收到电子邮件。

这是我本地机器上的 web.config:

<?xml version="1.0"?>
<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="MyDB" />
        <errorMail from="errors@mysite.com" to="myemail@mysite.com"
            subject="Error" smtpServer="localhost" smtpPort="25" 
            userName="user@mysite.com" password="mypassword" />
    </elmah>

    <connectionStrings>
        <add name="MyDB" connectionString="Data Source=.\SQLEXPRESS
            AttachDbFilename=|DataDirectory|\MyDB.mdf;
            Integrated Security=True;User Instance=True;
            MultipleActiveResultSets=True"
            providerName="System.Data.SqlClient" />
        <!--<add name="MyDB" connectionString="Server=mysite.com;
            Database=MyDB;User ID=user;Password=mypassword;
            Trusted_Connection=True;Integrated Security=False;
            MultipleActiveResultSets=True"
            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>
    </system.web>

    <location path="Admin/Errors">
        <system.web>
            <httpHandlers>
                <add verb="POST,GET,HEAD" path="elmah.axd"
                    type="Elmah.ErrorLogPageFactory, Elmah" />
            </httpHandlers>
        </system.web>
    </location>
</configuration>

我机器上的 web.config 和生产上的唯一区别是使用的连接字符串。在我的机器上,我连接到一个 .mdf 文件。在生产中,我正在连接到外部数据库。

谁能看到我在这里做错了什么?

我正在使用 C# 和 ASP.NET MVC 3

【问题讨论】:

  • 您的生产服务器运行的是什么版本的 IIS?
  • 此评论适用于可能遇到相同问题的其他人。不要忘记在生产服务器上创建 3 个存储过程。 (ELMAH_GetErrorsXml、ELMAH_GetErrorXml 和 ELMAH_LogError 以及为 DB 用户提供访问权限)。希望这对某人有所帮助。

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


【解决方案1】:

您需要设置 allowRemoteAccess ="yes" 进行远程访问。

  <elmah>
    <security allowRemoteAccess="yes"/>
  </elmah>

并检查 elmah 管理页面,看看是否对您有帮助。

访问示例:http://prodserver/elmah.axd

【讨论】:

  • 嗯,似乎有问题,即使是 elmah.axd 页面也无法在生产环境中加载,我收到 404 错误。但它确实适用于我的本地机器。有什么原因会发生这种情况?
  • 404 is Not Found,这意味着它不是权限问题,而是配置/安装问题。 elmah 是否安装在服务器上?
  • @Philipp - 是的,我在服务器上有 .dll。
  • 您检查过事件查看器吗?可能会给你另一个提示。
  • 我希望我能有 2 个被接受的答案,因为你的答案也有帮助。但安迪帮助我解决了更大的整体问题。
猜你喜欢
  • 2013-07-13
  • 1970-01-01
  • 2016-11-08
  • 1970-01-01
  • 2011-06-12
  • 2023-03-04
  • 1970-01-01
  • 2012-06-07
  • 2013-11-23
相关资源
最近更新 更多