在我在IIS 7中运行的ASP.NET 4.0 MVC项目中,我已经设置并配置了ELMAH来记录我的站点上的错误。但是,我无法使用代码500获取任何错误报告。
我设置了一个简单的控制器,它创建了一个被零除的异常,但是ELMAH没有记录它。我可以让ELMAH记录其他消息就好了,我没有过滤掉ErrorLog_Filtering中的任何异常。
此外,为了显示自定义页面,我更新了web.config的httpErrors部分,如下所示:
<customErrors mode="RemoteOnly" defaultRedirect="~/error/GenericError">
<error statusCode="403" redirect="~/error/AccessDenied" />
<error statusCode="404" redirect="~/error/NotFound" />
<error statusCode="500" redirect="~/error/Offline" />
<error statusCode="501" redirect="~/error/Offline" />
<error statusCode="503" redirect="~/error/Offline" />
</customErrors>
和
<system.webServer>
<httpErrors errorMode="DetailedLocalOnly" >
<error statusCode="403" prefixLanguageFilePath="" path="/error/AccessDenied" responseMode="ExecuteURL" />
<error statusCode="404" prefixLanguageFilePath="" path="/error/NotFound" responseMode="ExecuteURL" />
<error statusCode="500" prefixLanguageFilePath="" path="/error/GenericError" responseMode="ExecuteURL" />
<error statusCode="501" prefixLanguageFilePath="" path="/error/GenericError" responseMode="ExecuteURL" />
<error statusCode="503" prefixLanguageFilePath="" path="/error/Offline" responseMode="ExecuteURL" />
最后,在查看应用程序日志文件时,代码500错误消息不会显示在那里。
是否存在我缺少的配置,或者我是否在某种程度上意外地自行捕获错误并且不让它传播?
答案 0 :(得分:4)
您需要删除在FilterConfig.cs的HandleErrorAttribute
中添加过滤器RegisterGlobalFilters()
的行。 this question中的更多详细信息。