Elmah在生产时提供错误代码500,但在旧主机/本地开发上没有

时间:2011-04-16 20:56:23

标签: c# elmah production-environment

我无法弄清楚如何让Elmah在我的Asp.net MVC项目的生产主机上工作。在我的上一台主机上,所有内容都已正确设置,并且/Elmah.axd成功启动了错误记录器。但是,在生产主机上,它给了我500个错误代码。我不知道还有什么可以调试这个问题。我的web.config看起来像:

<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>

<system.webServer>
  <validation validateIntegratedModeConfiguration="false" />
  <modules runAllManagedModulesForAllRequests="true">
    <add name="ErrorLog" type="Elmah.ErrorLogModule, Elmah" />
  </modules>
  <handlers>
    <add name="Elmah" verb="POST,GET,HEAD" path="elmah.axd" type="Elmah.ErrorLogPageFactory, Elmah" />
  </handlers>
</system.webServer>

<system.web>
  <httpModules>
    <add name="ErrorLog" type="Elmah.ErrorLogModule, Elmah" />
  </httpModules>
  <httpHandlers>
    <add verb="POST,GET,HEAD" path="elmah.axd" type="Elmah.ErrorLogPageFactory, Elmah" />
  </httpHandlers>
</system.web>

<elmah>
  <errorLog type="Elmah.SqlErrorLog, Elmah" connectionStringName="MyDbContext" />
</elmah>

3 个答案:

答案 0 :(得分:0)

您可能忘记使用以下规则更新RegisterRoutes

public static void RegisterRoutes(RouteCollection routes)
{
     routes.IgnoreRoute("elmah.axd");
}

这些链接可能会对您http://code.google.com/p/elmah/wiki/MVCHow to get ELMAH to work with ASP.NET MVC [HandleError] attribute?

有所帮助

答案 1 :(得分:0)

事件日志应该能够为您提供有关错误500的更多信息。显然最好的方法是将调试器附加到IIS实例,但我猜这是不可能的!

要检查的另一件事是两个服务器是x86还是x64,因为即使ELMAH是独立于平台的,它的一些依赖也不是。

答案 2 :(得分:0)

以下是在IIS上调试500错误的方法:

IE GOTO:互联网选项 - &gt;高级 - &gt;禁用:显示友好的HTTP错误消息

之后你会得到一个可以调试的正常错误: - )

Advanced Internet options http://www.communitymx.com/content/source/A66B8/friendly.gif