2011-07-13 44 views
8

我想将自定义错误页面添加到我的Web应用程序。到目前为止,我已经元素下添加这个到我的web.config文件:防止IIS 7.5使用web.config显示默认错误页面

<customErrors mode="On" > 
    <error statusCode="404" redirect="~/404.aspx"/> 
    <error statusCode="500" redirect="~/500.aspx"/> 
</customErrors> 

也能正常工作对于.NET触及例如包含.aspx扩展名的URL错误。不过,我也希望为网址显示自定义错误,例如www.example.com/dasda

当前当我请求一个页面(如上面的IIS 7.5)时,显示它自己的错误消息。我已经元素下添加此:

<httpErrors > 
    <remove statusCode="404" subStatusCode="-1" /> 
    <error statusCode="404" path="~/404.aspx" responseMode="ExecuteURL" /> 
    <remove statusCode="500" subStatusCode="-1" /> 
    <error statusCode="500" path="~/500.aspx" responseMode="ExecuteURL" /> 
</httpErrors> 

我认为这将使IIS显示自定义错误页,而不是它是默认的,但是这似乎并不如此。

我知道我可以在IIS本身设置一个自定义的错误页面,但对于我的情况理想的解决方案是将此可配置在web.config中。

我曾尝试加入到这个在Page_Load事件我的自定义错误页的建议here

  Response.TrySkipIisCustomErrors = true; 

但是它并没有从地方我自定义错误页的显示停止IIS的默认页面。我也尝试过建议here

<httpErrors > 
    <remove statusCode="404" subStatusCode='-1' /> 
    <error statusCode="404" path="~/404.aspx" prefixLanguageFilePath='' responseMode="Redirect" /> 
    <remove statusCode="500" subStatusCode='-1' /> 
    <error statusCode="500" path="~/500.aspx" prefixLanguageFilePath='' responseMode="Redirect" /> 
    </httpErrors> 

但是这也行不通。

那么有没有办法通过配置web.config文件中的设置来防止IIS显示默认错误页面?

回答

14

我遇到的问题是,在默认情况下具有以下属性errorMode选项:DetailedLocalOnly,自定义或详细。

如果errorMode属性未指定为我所做的那么默认为DetailedLocalOnly(ref)。这意味着我不会看到显示的自定义错误。

的起作用的配置设置为:

<httpErrors errorMode="Custom"> 
    <remove statusCode="404" subStatusCode='-1' /> 
    <remove statusCode="500" subStatusCode='-1' /> 
    <error statusCode="404" path="/404.aspx" prefixLanguageFilePath="" responseMode="ExecuteURL" /> 
    <error statusCode="500" path="/500.aspx" prefixLanguageFilePath="" responseMode="ExecuteURL" /> 
    </httpErrors> 

的errorMode =“自定义”是很方便的测试自定义页面是否正常工作,但可能是更方便的时候离开省略或明确设置为errorMode =“DetailedLocalOnly “用于调试目的。

+1

感谢Aesir发布此信息。我可以用你的例子解决同样的问题。 – GibboK

+2

这也解决了我的问题。谢谢! –

+1

感谢您发现errorMode标志;缺乏效果让我很烦恼。 – icelava

0

我认为你需要强制IIS将CustomErrorModule用于用户请求的任何资源。 尝试下面的添加到您的web配置

<modules> 
     <add name="CustomErrorModule" type="customErrorModule" preCondition="" /> 
</modules> 

也看看下面的链接

https://serverfault.com/questions/53712/in-iis-7-how-do-i-set-up-a-default-error-document-for-any-error

+1

谢谢,web.config应该添加哪些部分?我试着把它放在httpModules和模块部分,但都没有工作。 – Aesir

+0

谢谢你的更新,但它仍然无法正常工作。我设法让它工作。 – Aesir