针对 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 - 内部服务器错误。为啥? :-(的主要内容,如果未能解决你的问题,请参考以下文章
当我浏览 http://localhost:8004/elmah.axd 时,它会生成 404 错误