大家都知道,在开发asp.net应用程序时,通过web.config文件可以配置在执行 Web 请求期间发生未处理的错误时,ASP.NET
显示信息的方式。下面是一个典型的基本配置:
class="brush:csharp;gutter:false;"><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。