Ben*_*enG 8 c# asp.net iis asp.net-mvc httpmodule
我目前有httpErrors
设置处理500's: -
<httpErrors errorMode="Custom" existingResponse="Replace">
......
<remove statusCode="500"/>
<error statusCode="500" path="/server-error" responseMode="ExecuteURL"/>
</httpErrors>
Run Code Online (Sandbox Code Playgroud)
这工作正常,但在iis收到错误的情况下,我仍然得到死亡的黄色屏幕.一个例子是当实体框架无法连接到数据库并且我收到: -
无法打开登录请求的数据库"Test-DB".
登录失败.
用户'sa'登录失败.
我已经设置customErrors
好处理这个: -
<customErrors mode="On" defaultRedirect="error.html" redirectMode="ResponseRedirect">
<error statusCode="500" redirect="error.html" />
</customErrors>
Run Code Online (Sandbox Code Playgroud)
只要没有没有,它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>
Run Code Online (Sandbox Code Playgroud)
评论这些,我得到了error.html
,保持他们,我得到
运行时错误
说明:处理请求时发生异常.此外,执行第一个异常的自定义错误页面时发生另一个异常.请求已终止.
显示项目中的模块在尝试显示时也出错error.html
.
有谁知道修复/解决方法?
这是一个艰难的情况 - 您的错误来自HttpModule
,它针对每个请求运行 - 包括对error.html
页面的请求。一种方法是仅通过服务器路由静态文件(例如 error.html),并在 .NET 级别忽略它们;这可能并不总是可行(有时在 .NET 级别处理静态文件很方便)。我能想到的唯一其他方法是在 global.asax 中挂钩错误事件并自己处理它(这将忽略customErrors
)
就像是:
public class Global : System.Web.HttpApplication
{
protected void Application_Error(object sender, EventArgs e)
{
// is there an error ?
var error = Server.GetLastError();
if (error != null)
{
// mark the error as - "i'll handle it myself"
Server.ClearError();
// load error.html manually & dump it to response
var content = File.ReadAllText(Server.MapPath("~/error.html"));
Context.Response.Write(content);
// set correct error code
Context.Response.StatusCode = 500;
}
}
}
Run Code Online (Sandbox Code Playgroud)
注意:这可以解决,但你看到一般原则......
归档时间: |
|
查看次数: |
531 次 |
最近记录: |