我看过很多关于使用 httpErrors 的帖子,我相信我的项目存在更深层次的问题,或者至少是我的理解。
我们最近从使用 customErrors 改为使用 HttpErrors。自定义错误会显示正常,但如果出现错误,我只会看到 IIS 蓝屏(没有关于错误的信息)。
从那以后,我一直在尝试远程获取自定义错误页面并在本地获取 YSOD,但没有成功。
我添加了“Response.TrySkipIisCustomErrors = true;” 到 Global.asax.cs 中的 Application_Error 但这似乎没有什么不同。此外,该项目同时使用 ASP .NET 和 MVC,不确定这是否会有所不同。
我一直在玩现有的响应和错误模式,这些是我看到的结果:(如果我的格式没有意义,请告诉我)
[现有响应 | 错误模式 | 远程结果 | 本地结果]
| 替换 | 详细的LocalOnly | 更正错误页面 | IIS蓝屏
| 替换 | 定制 | 更正错误页面 | 更正错误页面
| 直通 | 详细的LocalOnly | YSOD | YSOD
| 汽车 | 定制 | YSOD | YSOD
| 汽车 | 详细Localonly | YSOD | YSOD
这是我的网络配置:
<httpErrors existingResponse="Auto" errorMode="Custom">
<remove statusCode="404" subStatusCode="-1" />
<error statusCode="404" subStatusCode="-1" prefixLanguageFilePath="" path="404.html" responseMode="File" />
<remove statusCode="500" subStatusCode="-1" />
<error statusCode="500" subStatusCode="-1" prefixLanguageFilePath="" path="500.html" responseMode="File"/>
</httpErrors>
全球.asax.cs
protected void Application_Error(object sender, EventArgs e)
{
Response.TrySkipIisCustomErrors = true;
Exception ex = Server.GetLastError().GetBaseException();
LogProvider.Log(LogProvider.LogLevels.Error, "Global Error", ex);
}
谢谢你的帮助。