在web.config中使用自定义错误设置时出现IIS7“单线”错误

时间:2010-07-06 11:05:57

标签: 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>

这将返回我自己的ASP.NET错误,其中我设置了TrySkipIisCustomErrors = true,以及未捕获的500s,静态文件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中。

2 个答案:

答案 0 :(得分:1)

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

<httpErrors existingResponse="PassThrough" />

答案 1 :(得分:1)

我知道这是一个老问题,但它与我刚刚想到的过去几天所遇到的问题完全相同。什么对我有用:

尝试删除

<httpErrors>
完全来自web.config的

元素。