C# web.config之<customErrors>节点说明案例详解

作者:烈日轨迹 时间:2023-07-06 20:20:15 

<customErrors>节点用于定义一些自定义错误信息的信息。此节点有Mode和defaultRedirect两个属性,其中defaultRedirect属性是一个可选属性,表示应用程序发生错误时重定向到的默认URL,如果没有指定该属性则显示一般性错误。Mode属性是一个必选属性,它有三个可能值,它们所代表的意义分别如下:

Mode 说明
On 表示在本地和远程用户都会看到自定义错误信息。
Off 禁用自定义错误信息,本地和远程用户都会看到详细的错误信息。
RemoteOnly 表示本地用户将看到详细错误信息,而远程用户将会看到自定义错误信息。
这里有必要说明一下本地用户和远程用户的概念。当我们访问asp.net应用程时所使用的机器和发布asp.net应用程序所使用的机器为同一台机器时成为本地用户,反之则称之为远程用户。在开发调试阶段为了便于查找错误Mode属性建议设置为Off,而在部署阶段应将Mode属性设置为On或者RemoteOnly,以避免这些详细的错误信息暴露了程序代码细节从而引来黑客的入侵。
下面我们添加一个页面CustomErrorsDemo.aspx,在它的Page_Load事件里抛出一个异常,代码如下:


using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

public partial class CustomErrorsDemo : System.Web.UI.Page
{
   protected void Page_Load(object sender, EventArgs e)
   {
       throw new Exception("故意抛出的异常。");
   }
}

我们先配置<customErrors>如下:


<customErrors mode="RemoteOnly">
    <error statusCode="403" redirect="NoAccess.htm" />
    <error statusCode="404" redirect="FileNotFound.htm" />
</customErrors>

这时本地运行CustomErrorsDemo.aspx的效果如下:

远程访问时看到的效果:

如果我们将customErrors的Mode属性设置为“On”本地运行和远程访问都会看到如下效果:

如果将customErrors的Mode属性设置为“Off”本地运行和远程访问都会看到如下效果:

<error>子节点

在<customErrors>节点下还包含有<error>子节点,这个节点主要是根据服务器的HTTP错误状态代码而重定向到我们自定义的错误页面,注意要使<error>子节点下的配置生效,必须将<customErrors>节点节点的Mode属性设置为“On”。下面是一个例子:


<customErrors mode="On" defaultRedirect="GenericErrorPage.htm">
    <error statusCode="403" redirect="403.htm" />
    <error statusCode="404" redirect="404.htm" />
</customErrors>

在上面的配置中如果用户访问的页面不存在就会跳转到404.htm页面,如果用户没有权限访问请求的页面则会跳转到403.htm页面,403.htm和404.htm页面都是我们自己添加的页面,我们可以在页面中给出友好的错误提示。

来源:https://www.cnblogs.com/ap0606122/archive/2011/07/07/2099937.html

标签:C#,customErrors
0
投稿

猜你喜欢

  • java线程间通信的通俗解释及代码示例

    2023-12-06 18:04:43
  • 不用IDE写C#的Hello World的方法

    2022-01-25 19:24:58
  • Java线程间的通信方式详解

    2022-05-20 10:33:47
  • java使用正则抓取网页邮箱

    2022-12-02 10:30:30
  • jstl标签基础开发步骤(详解)

    2023-07-08 18:25:41
  • redis scan命令导致redis连接耗尽,线程上锁的解决

    2021-11-19 02:57:52
  • SpringBoot文件分片上传的示例代码

    2023-06-18 11:30:15
  • Android开发实现浏览器全屏显示功能

    2022-01-01 18:01:48
  • 详解Java实现缓存(LRU,FIFO)

    2022-04-24 13:35:26
  • 详解Spring Boot 事务的使用

    2022-08-09 01:59:07
  • SpringBoot错误处理机制以及自定义异常处理详解

    2021-09-23 05:45:29
  • java基于JDBC连接Oracle 11g Release2实例分析

    2022-06-06 02:36:36
  • Swing拆分窗格控件JSplitPane使用详解

    2022-11-14 21:13:48
  • mybatis if test判断BigDecimal遇到的坑及解决

    2022-12-06 09:44:24
  • Spring中校验器(Validator)的深入讲解

    2022-03-05 11:58:35
  • 微信公众号支付(一)如何获取用户openId

    2022-07-29 04:13:57
  • Java基础详解之集合框架工具Collections

    2021-11-09 02:40:32
  • C#中Dispose和Finalize方法使用介绍

    2022-09-10 16:05:21
  • Java读取properties文件之中文乱码问题及解决

    2021-07-19 06:43:06
  • VC++时钟函数

    2021-06-17 10:07:51
  • asp之家 软件编程 m.aspxhome.com