【发布时间】:2016-10-20 10:13:40
【问题描述】:
我目前有 httpErrors 设置来处理这里的 500 个:-
<httpErrors errorMode="Custom" existingResponse="Replace">
......
<remove statusCode="500"/>
<error statusCode="500" path="/server-error" responseMode="ExecuteURL"/>
</httpErrors>
这工作正常,但在 iis 收到错误的情况下,我仍然会得到黄屏死机。一个例子是实体框架无法连接到数据库并且我收到:-
无法打开登录请求的数据库“Test-DB”。
登录失败。
用户“sa”登录失败。
我已经设置了customErrors 来处理这个问题:-
<customErrors mode="On" defaultRedirect="error.html" redirectMode="ResponseRedirect">
<error statusCode="500" redirect="error.html" />
</customErrors>
只要没有modules 而没有preCondition="managedHandler",它就会按预期工作。
我有几个处理图像和 css 文件的模块,它们在同一个项目中。
<modules runAllManagedModulesForAllRequests="false">
<add name="ErrorLog" type="Elmah.ErrorLogModule, Elmah" preCondition="managedHandler" />
<add name="ErrorFilter" type="Elmah.ErrorFilterModule, Elmah" preCondition="managedHandler" />
<add name="ImageHandler" type="foo.bar.ProductImageHandlerHttpModule" />
<add name="CustomCssHandler" type="foo.bar.CustomCssHttpModule" />
<add name="Glimpse" type="Glimpse.AspNet.HttpModule, Glimpse.AspNet" preCondition="integratedMode" />
</modules>
评论这些,我得到error.html,把它们留在里面,我得到
运行时错误
说明:处理您的程序时发生异常 要求。此外,在执行 第一个异常的自定义错误页面。请求已 终止。
显示项目中的模块在尝试显示 error.html 时也出错。
有人知道修复/解决方法吗?
【问题讨论】:
-
嗨@BenG,我试图重现这个问题。我认为问题在于 preCondition="managedHandler" 尽管msdn.microsoft.com/en-us/library/ms690693(v=vs.90).aspx 的文档说它不应该运行具有 preCondition="managedHandler" 对于非托管这样的 html 的模块,但它仍然可以。我只是想找出为什么 IIS 仍然为具有前提条件的 html 文件运行模块。
-
@MurtazaTahirAli 模块 with 前提条件不适合我。它的另一个 foo.bar. 自定义的会引发下一个错误。
标签: c# asp.net asp.net-mvc iis httpmodule