asp.net - 在 web.config 中使用自定义错误设置时出现 IIS7 'one liner' 错误

标签 asp.net iis iis-7

我有一个 ASP.NET MVC 应用程序,它在各个适当的点返回 404,偶尔返回 500 状态代码。

Response.StatusCode = (int)HttpStatusCode.NotFound;

当我设置这些状态代码之一时,我还相应地设置了 TrySkipIisCustomErrors 属性。

Response.TrySkipIisCustomErrors = true

我现在想做的是配置 IIS 来传递这些我自己设置的错误,并捕获可能发生的任何其他错误(例如静态文件上的 404,我没有向 ASP 发送请求) .NET,或在我的应用程序中未捕获 500 个错误(框架可能未设置 TrySkipIisCustomErrors 属性)。

我的 system.webServer/httpErrors 节点如下所示:

<httpErrors existingResponse="Auto" errorMode="Custom">
</httpErrors>

这会返回我自己设置 TrySkipIisCustomErrors = true 的 ASP.NET 错误,以及未捕获的 500、静态文件 404 等的标准 IIS 错误页面。

然后我尝试像这样修改它:

<httpErrors existingResponse="Auto" errorMode="Custom" defaultPath="/Skins/Shared/Error/Error.html" defaultResponseMode="ExecuteURL">
  <clear />
</httpErrors>

我相信这应该显示我的自定义错误页面而不是标准 IIS 页面。但是,当我添加此代码时,我收到一行 IIS 错误(“由于发生内部服务器错误,无法显示该页面。”)并返回 500 状态代码。

我认为这是由于我的配置错误造成的,但我一生都无法理解我做错了什么!

我也尝试过这种方法,结果相同:

<httpErrors existingResponse="Auto" errorMode="Custom" defaultPath="Skins\Shared\Error\Error.html" defaultResponseMode="File">
  <clear />
</httpErrors>

即使设置重定向到完全不同的 URL 也会产生同样的问题。

我一直在使用此页面作为引用:http://blogs.iis.net/ksingla/archive/2008/02/18/what-to-expect-from-iis7-custom-error-module.aspx .

错误文件确实存在,我可以使用浏览器直接点击它。

顺便说一句,我不完全确定应该对 system.Web\customErrors 节点做什么。这是仅 IIS6 设置,还是与 ASP.NET 有关?目前我没有将其包含在我的 web.config 中。

最佳答案

将其添加到您的 system.webserver 节点。它将告诉 IIS 让 ASP.Net 处理错误。

<httpErrors existingResponse="PassThrough" />

关于asp.net - 在 web.config 中使用自定义错误设置时出现 IIS7 'one liner' 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3185649/

相关文章:

c# - ASP.NET 网页的计时器应用程序

asp.net - 手动清除单个应用程序/网站的ASP.NET服务器缓存?

c# - 一旦部署到网络服务器,MVC4 网络 API 找不到默认文档

asp.net - 使用 ELMAH 记录 WCF 服务的异常

c# - 向导中动态加载的控件

ASP.NET Core Route 匹配带有通配符结尾的第一部分

c# - 无法在 iis 上托管 ASMX Web 服务

IIS 日志中的 WCF 服务方法名称

asp.net - 无法加载文件或程序集 'mydllfile.dll' 或其依赖项之一。该模块应包含程序集 list

javascript - Gmail OpenID 用户无法识别