web.config文件之自定义错误节

大家都知道,在开发asp.net应用程序时,通过web.config文件可以配置在执行 Web 请求期间发生未处理的错误时,ASP.NET

显示信息的方式。下面是一个典型的基本配置:

<system.web>
<customErrors mode="On"  defaultRedirect="GenericErrorPage.htm" >
      <!--资源不可用。服务器理解客户端的请求,但拒绝处理它:如请求web.config文件-->
      <error statusCode="403" redirect="NoAccess.htm" />
      <error statusCode="404" redirect="FileNotFound.htm" />
</customErrors>
</system.web>

上面的customErrors则是我们定义自定义错误的配置结点,它有两个比较重要的属性:mode和defalutRedirect。下面是

MSDN上的描述:

mode指定是启用还是禁用自定义错误,或者在服务器自身之外的计算机上查看错误时,禁用详细错误消息。 

可以将 mode 设置为以下值:
   On指定启用自定义错误。 如果未指定 defaultRedirect 特性,用户将看到一般性错误。 会向远程客户端和本地主机显示自定义错误。
   Off指定禁用自定义错误。 会向远程客户端和本地主机显示详细的 ASP.NET 错误。
   RemoteOnly指定仅向远程客户端显示自定义错误并且向本地主机显示详细的 ASP.NET 错误。 这是默认值。
defaulRedirect指定出错时将浏览器定向到的默认 URL。 如果未指定该特性,则显示一般性错误。

上面的描述中有3种错误:自定义错误、一般性错误、详细的asp.net错误。那这三种错误分别指的是什么,下面通过一个简单的

例子来说明。

1)如果设置mode=Off,则禁用自定义错误,向远程客户端和本地主机显示详细的 ASP.NET 错误。

 

上图的信息即是详细的详细的 ASP.NET 错误。

2)如果设置mode=On,则启用自定义错误。如果未指定 defaultRedirect 特性,用户将看到一般性错误。

我们去掉 defaultRedirect属性,并设置mode=On。此例子中代表:启用自定义错误显示,但会发生分母为0的错误时

ASP.NET的处理方式。如下图所示:

上图显示的信息即为一般性错误。

3)如果设置mode=On,则启用自定义错误。此处指定 defaultRedirect=GenericErrorPage.htm,则将显示自定义错误。

此时显示的则是我们自定义的显示信息。

同样的,我们也可以指定当访问的文件不存在或无权限访问当前页面时,asp.net如何显示我们自定义的页面。可以通过error子

结点来配置。如:

<error statusCode="403" redirect="NoAccess.htm" />

<error statusCode="404" redirect="FileNotFound.htm" />

此处只简单描述自定义错误配置中比较常用的信息,有关配置结点更详细的信息请参考MSDN。

标签