IIS 7.0不显示自定义错误页面

问题描述:

我正在运行具有自己的错误处理程序的应用程序。在dev环境中测试时错误页面显示正确(错误页面显示正确)。
但是生产IIS上的相同代码,错误页面被替换。 问题描述为hereIIS 7.0不显示自定义错误页面

我只是想知道有没有办法在web.config文件中写这个设置,而不是修改代码。

敬畏(+1),但另外:IIS 7在链接的博客文章和this MSDN article中有特殊处理。如果你在你的动作中使用HandleErrorAttribute,这已经为你完成了。如果没有,您需要设置:

filterContext.HttpContext.Response.TrySkipIisCustomErrors = true; 

...自己。

+0

这个设置的原因是什么? – 2009-08-18 20:31:48

+2

显然,我不会为微软发言。我只能猜测他们的动机。我的猜测是用户认为真实的错误信息是“可怕的”。因此,IE中的假错误页面和此功能。因此,可能是您在MVC应用程序中显示的页面。你只需要告诉IIS你已经提供了一个用户友好的错误消息,所以它不需要打扰。 – 2009-08-18 21:18:46

有一个在应用程序的Web.config文件中的设置来设置调试模式:

默认为:

<customErrors mode="RemoteOnly" /> 

尝试将其设置为“Off”(注:该值区分大小写!)

<customErrors mode="Off" /> 

我不知道这是否设置由IIS7尊重,但因为你看到从部署的开发环境不同的行为,这是我的拳头猜测。为了测试是否属于这种情况,如果您有这种可能性,您可以尝试从网络中的其他计算机上运行您的开发应用程序。

+0

我试过了,但没有奏效。我还在.config文件中包含了一些服务器设置,但事实证明IIS以某种方式忽略了它们。 – 2009-08-18 20:32:37

+0

http://*.com/questions/2480006/what-is-the-difference-between-customerrors-and-httperrors – 2013-06-16 10:08:13

事实证明,为了强制IIS 7显示自定义页面,应将以下行添加到web.config文件中。

放在system.webServer节

<httpErrors errorMode="Detailed"> <!-- this is impornant --> 
<!-- Some custom error pages url go here --> 
</httpErrors> 

我发现了<system.webServer>部分可以让请求通过。然后,我的应用可以显示我的自定义页面。您可以在Web.Config使用这些行:

<system.webServer> 
    <httpErrors existingResponse="PassThrough" /> 
</system.webServer> 

您还可以阅读加长版知道What to expect from IIS7 custom error module