2013-11-22 180 views
8

我在ASP.NET网站上设置了自定义错误页面。IIS自定义错误未显示自定义错误页面

有一个错误是没有显示自定义错误页面,只是显示了通常的黄色ASP.NET错误页面。如果自定义错误打开,它会显示“服务器错误在/应用程序”/“运行时错误”,但如果自定义错误关闭,它会显示“验证视图状态失败”错误。

我的web.config的有关部分是:

<system.web> 
    <compilation debug="false" targetFramework="4.0" /> 
    <customErrors mode="On" redirectMode="ResponseRewrite"> 
     <error statusCode="404" redirect="/404.aspx" /> 
     <error statusCode="500" redirect="/500.aspx" /> 
    </customErrors> 

<system.webServer> 
    <httpErrors errorMode="DetailedLocalOnly" /> 

要捕获这个错误我必须使用不同的状态码或substatuscode还是有别的原因呢?

注意: Server 2008 R2,IIS 7.

+0

CustomErrors具有defaultRedirect属性。尝试将其设置为500.aspx。 – Mark

+0

嗨@Mark,我确实尝试过,但没有任何区别。谢谢。 – johna

+0

它实际上是'DetailedLocalOnly'的最后一行,它会阻止显示您的自定义页面。 – Marc

回答

13

经过深入研究,我发现这意味着IIS显示错误而不是ASP.NET。

我更改了web.config的system.webServer部分,所以IIS也可以使用自定义错误页面并解决了问题。

<system.webServer> 
    <httpErrors errorMode="Custom" existingResponse="Replace"> 
    <remove statusCode="500" subStatusCode="-1" /> 
    <error statusCode="500" subStatusCode="-1" responseMode="ExecuteURL" path="/500.aspx" /> 
    </httpErrors> 
+0

我在实施“Owin”中间件时遇到了同样的问题 – Ramakrishna