针对 elmah.axd 的请求总是失败并返回 500 - 内部服务器错误。为啥? :-(

Posted

技术标签:

【中文标题】针对 elmah.axd 的请求总是失败并返回 500 - 内部服务器错误。为啥? :-(【英文标题】:Requests against elmah.axd always fails with a 500 - Internal server error. Why? :-(针对 elmah.axd 的请求总是失败并返回 500 - 内部服务器错误。为什么? :-( 【发布时间】:2011-04-25 20:25:10 【问题描述】:

我使用 NuPack 工具将 Elmah 添加到我的开发人员计算机上的站点。这就像一个魅力,但是当我向 elmah.axd 页面发送请求时,我得到的只是 500 - 内部服务器错误。

我的代码设置: 视觉工作室 2010 基于 EPiServer 4.62B 构建的站点 在 .NET Framework 2 上运行(因为 EPiServer)

我的 IIS 设置: IIS 7.5 经典 .NET AppPool(因为 EPiServer)

我的电脑: 运行 Windows 7 32bit(因为 EPiServer)

web.config 中的 ELMAH 内容:

<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="yes" />
  <errorLog type="Elmah.XmlFileErrorLog, Elmah" logPath="~/App_Data" />
</elmah>

在这个阶段,我真的不需要allowRemoteAccess,因为我正在从我的机器上运行所有东西,但目前正在尝试任何东西。我知道 elmah.dll 正在运行,因为正在创建日志文件。

<add verb="POST,GET,HEAD" path="elmah.axd" type="Elmah.ErrorLogPageFactory, Elmah" />

在 system.web 内部 | httpHandlers。

<add name="ErrorLog" type="Elmah.ErrorLogModule, Elmah" />
<add name="ErrorMail" type="Elmah.ErrorMailModule, Elmah" />
<add name="ErrorFilter" type="Elmah.ErrorFilterModule, Elmah" />

在 system.web 内部 | http模块。

<add name="ErrorLog" type="Elmah.ErrorLogModule, Elmah" />
<add name="ErrorMail" type="Elmah.ErrorMailModule, Elmah" />
<add name="ErrorFilter" type="Elmah.ErrorFilterModule, Elmah" />

在 system.webServer 内部 |模块

<add name="Elmah" verb="POST,GET,HEAD" path="elmah.axd" type="Elmah.ErrorLogPageFactory, Elmah" />

在 system.webServer 内部 |处理程序

我基本上已经将我在网上可以找到的所有建议都添加到了 web.config 中,但没有任何好处。这让我相信还有其他问题,有什么想法吗?

【问题讨论】:

【参考方案1】:

那里没有到 Elmah 数据库的连接字符串。

您是否也将 Elmah 和 SqlLite dll 添加到您的 bin 文件夹中?

我有一个最小的设置指南,可能会有所帮助:http://www.codeulike.com/2010/05/quick-elmah-setup.html

【讨论】:

感谢您的回复!目前 Elmah 设置为在跟踪错误时使用 xml 文件。因此,不需要连接字符串。 Elmah 正在生成文件,所以 elmah.dll 正在工作。【参考方案2】:

我也遇到了这个问题。我发现唯一可行的方法是将我的应用程序池切换到集成模式。不过,我的应用尚未针对此进行全面测试,因此我没有在生产中更改此设置。

【讨论】:

将此标记为答案。卡在单线程池中似乎是 elmah 无法正常工作的原因(可能 ELMAH 可以正常工作,但单线程池无法正确使用它)。【参考方案3】:

elmah_error 数据库表有可能需要修复。

在我的情况下发生了几次,通过修复,它被修复了。

我遇到了完全相同的问题 elmah-> 500 - Internal Server Error.

只需运行 mysql 命令:

repair table elmah.elmah_error;

然后重试访问 elmah。

【讨论】:

以上是关于针对 elmah.axd 的请求总是失败并返回 500 - 内部服务器错误。为啥? :-(的主要内容,如果未能解决你的问题,请参考以下文章

如何保护 Elmah.axd?

如何保护 Elmah.axd?

导航到“/elmah.axd”时会抛出“缺少根元素”错误

当我浏览 http://localhost:8004/elmah.axd 时,它会生成 404 错误

在 Apache 上运行 ASP.net MVC 时无法访问 elmah.axd

无法让 ELMAH 在 IIS7.5 上与 ASP.NET MVC2 一起使用