在ASP.Net网站上实现自定义错误页面

时间:2010-01-29 10:58:49

标签: asp.net web-config custom-error-pages custom-errors

我有一个ASP.Net网站,我想使用自定义错误页面。我将以下代码放在我的web.config

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

问题是,当我转到不存在的URL仍然使用IIS管理器中指定的404错误页面时。

问题:如何使用我创建的error.aspx页面?为什么IIS管理器中的设置会覆盖web.config?

5 个答案:

答案 0 :(得分:26)

尝试这种方式,差不多......但这就是我所做的,并且正在工作。

<configuration>
    <system.web>
       <customErrors mode="On" defaultRedirect="apperror.aspx">
          <error statusCode="404" redirect="404.aspx" />
          <error statusCode="500" redirect="500.aspx" />
       </customErrors>
    </system.web>
</configuration> 

或尝试从IIS设置更改404错误页面,如果紧急需要。

答案 1 :(得分:7)

有两种方法可以为ASP.NET站点配置自定义错误页面:

  1. Internet信息服务(IIS)管理器(GUI)
  2. web.config文件
  3. 本文介绍了如何执行每项操作:

    您的 error.aspx 页面未显示的原因可能是因为您的web.config中存在错误。请尝试这样做:

    <configuration>
       <system.web>
          <customErrors defaultRedirect="error.aspx" mode="RemoteOnly">
             <error statusCode="404" redirect="error.aspx"/>
          </customErrors>
       </system.web>
    </configuration>
    

    您可能需要确保 IIS管理器 - 功能委派中的Error Pages设置为读/写

    IIS Manager: Feature Delegation panel

    此外,这个答案可以帮助您配置web.config文件:

答案 2 :(得分:1)

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

如果已知文件扩展名(.html,.aspx等),上面的代码仅适用于“找不到页面错误-404”

除此之外,您还设置了客户错误,因为扩展名未知或不正确

.aspwx.vivaldo。您必须在httperrors

中添加web.config次设置
<httpErrors  errorMode="Custom"> 
       <error statusCode="404" prefixLanguageFilePath="" path="/404.aspx"         responseMode="Redirect" />
</httpErrors>
<modules runAllManagedModulesForAllRequests="true"/>

它必须位于<system.webServer> </system.webServer>

答案 3 :(得分:0)

<system.webServer>     
<httpErrors errorMode="DetailedLocalOnly">
        <remove statusCode="404" subStatusCode="-1" />
        <error statusCode="404" prefixLanguageFilePath="" path="your page" responseMode="Redirect" />
    </httpErrors>
</system.webServer>

答案 4 :(得分:0)

您的结束标记中是否存在拼写错误,即:

</CustomErrors> instead of </CustomError>?