配置元素customErrors[通俗易懂]

配置元素customErrors[通俗易懂] Asp.net配置文件的配置方式,其实在MSDN里面是写得最清楚的了。可惜之前一直未曾了解到MSDN的强大。  先贴个地址:http://msdn.microsoft.com/zh-cn/library/dayb112d(v=vs.80).aspx,然后逐个分析。我希望自己能够从头到尾认真学完这系列东西。为了不至于让自己太早放弃,我决定从自己用过的配置文件学起,然后逐渐接触那些比较生疏,和少…

大家好,又见面了,我是你们的朋友全栈君。

 Asp.net配置文件的配置方式,其实在MSDN里面是写得最清楚的了。可惜之前一直未曾了解到MSDN的强大。

  先贴个地址:http://msdn.microsoft.com/zh-cn/library/dayb112d(v=vs.80).aspx,然后逐个分析。我希望自己能够从头到尾认真学完这系列东西。为了不至于让自己太早放弃,我决定从自己用过的配置文件学起,然后逐渐接触那些比较生疏,和少用的。

一、customErrors 元素

属性 说明

defaultRedirect

指定出错时将浏览器定向到的默认 URL。如果未指定该属性,则显示一般性错误。

可选的属性。

URL 可以是绝对的(如 www.contoso.com/ErrorPage.htm)或相对的。相对 URL(如 /ErrorPage.htm)是相对于为该属性指定 URL 的 Web.config 文件,而不是相对于发生错误的网页。以字符 (~) 开头的 URL(如 ~/ErrorPage.htm)表示指定的 URL 是相对于应用程序的根路径。

mode

指定是启用或禁用自定义错误,还是仅向远程客户端显示自定义错误。

必选的属性。

可选值以及说明:

On        指定启用自定义错误。如果未指定 defaultRedirect,用户将看到一般性错误。

Off        指定禁用自定义错误。这允许显示标准的详细错误。

RemoteOnly  指定仅向远程客户端显示自定义错误并且向本地主机显示 ASP.NET 错误。这是默认值。

默认值为 RemoteOnly。

  2、位置

 customerErrors -> configuration-> system.web  //该元素放于<system.web>下的<configuration>节点下

 

  3、子元素

元素 说明

error

指定给定 HTTP 状态代码的自定义错误页。

可选的元素。

错误标记可以出现多次。子标记的每一次出现均定义一个自定义错误条件。

   4、配置示例:

<configuration>
  <system.web>
    <customErrors defaultRedirect="defaultError.htm"  //发生错误时,重定向到defaultError.htm
                  mode="RemoteOnly">           //仅仅对本地用户显示详细错误信息
      <error statusCode="500"               //针对500错误,跳转到500Error.htm
             redirect="500Error.htm"/>
    </customErrors>
  </system.web>
</configuration>

  5、配置节处理程序

  该配置节点对应Asp.net中的配置节类为:

 System.Web.Configuration.CustomErrorsSection

 

  来看看在类的主要公共属性:

属性 说明
DefaultRedirect 获取或设置重定向的默认 URL。
ElementInformation  获取包含 ConfigurationElement 对象的不可自定义的信息和功能的 ElementInformation 对象。 (从 ConfigurationElement 继承。)
Errors 获取 CustomError 对象的集合,也就是其下面的<error>配置节。
LockAllAttributesExcept  获取被锁定的属性的集合。 (从 ConfigurationElement 继承。)
LockAllElementsExcept  获取被锁定的元素的集合。 (从 ConfigurationElement 继承。)
LockAttributes  获取被锁定的属性的集合。 (从 ConfigurationElement 继承。)
LockElements  获取被锁定的元素的集合。 (从 ConfigurationElement 继承。)
LockItem  获取或设置一个值,该值指示是否已锁定该元素。 (从 ConfigurationElement 继承。)
Mode 获取或设置错误显示模式。
SectionInformation  获取一个 SectionInformation 对象,该对象包含 ConfigurationSection 对象的不可自定义的信息和功能。 (从 ConfigurationSection 继承。)

  下面以程序示例如何在程序中读取和设置配置节:

        public ActionResult Index()
        {
            //<customErrors defaultRedirect="defaultError.htm" mode="Off">
            //  <error statusCode="500" redirect="500.htm"/>
            //</customErrors>

            //CustomErrorsSection customErrorsSection = ConfigurationManager.GetSection("system.web/customErrors") as CustomErrorsSection;    //这样获取也可以,但是要注意里面的路径的写法
            CustomErrorsSection CES = (CustomErrorsSection)WebConfigurationManager.OpenWebConfiguration("/").GetSection("system.web/customErrors");
            Response.Write(CES.DefaultRedirect);    //输出 defaultError.htm
            CustomErrorsMode mode = CES.Mode;
            Response.Write(mode);       //输出 Off

            CustomError CE = CES.Errors[0]; //获取其下的第一个子<error>节点
            Response.Write(CE.StatusCode);  //输出 500
            Response.Write(CE.Redirect);    //输出 500.htm

            ElementInformation EleInfo = CES.ElementInformation;    //元素信息
            Response.Write(EleInfo.LineNumber);     //输出 14 恰好是customErrors所在Web.Config的行号

            System.Configuration.Configuration c = CES.CurrentConfiguration;   //当前Configuration对象的引用
            Response.Write(CES.IsReadOnly());     //输出 False 指示该节点是否为只读
            Response.Write(CES.LockItem);         //输出 False 是否已锁定该元素
            Response.Write(CES.RedirectMode);     //输出 ResponseRedirect 一个枚举  将用户重定向到自定义错误页面时,是否应该更改请求的URL

            SectionInformation SI = CES.SectionInformation;
            Response.Write(SI.Name);     //输出 customErrors

            return View();
        }

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/160176.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • python运行代码不成功_Python | PyCharm无法直接运行(Run)脚本

    python运行代码不成功_Python | PyCharm无法直接运行(Run)脚本1刚开始是这样,笔者在PyCharm新建了一个package,然后放了一个脚本2发现无法直接运行:没有Run选项,只有Rununittests选项。于是把脚本拷贝到另一个不是package的目录下3发现在这个目录下,除了这个脚本以外,其余的脚本都是可以运行的4看来是脚本的内容有问题了。看看笔者这个cannot_run的脚本5笔者在Python自带的交互环境IDLE上,运行这个代码,也是正常的。真…

    2022年8月29日
  • kali密码爆破工具_目录对比工具

    kali密码爆破工具_目录对比工具一、下载与安装百度云下载链接:https://pan.baidu.com/s/1Df4wJy2jZ3kRx_aROWy1PQ(提取码:vfcn) 下载之后解压然后使用工具将解压后的目录移动到Linux中(此处我们选择Kali)进入dirsearch-maser目录之后,其中的“dirsearch.py”就是我们可以使用的dirsearch工具,但是我们没有权限执行该文件,所以需…

    2022年10月5日
  • CountDownLatch详解

    CountDownLatch详解参考:Java并发编程的艺术JDK版本:AdoptOpenJDK11.0.2+91概念CountDownLatch允许一个或者多个线程去等待其他线程完成操作。CountDownLatch接收一个int型参数,标识要等待的工作线程的个数。当然也不一定是多线程,在单线程中可以用这个int型参数标识多个操作步骤。2方法CountDownLatch2例子下面代码演示2个等待线程通过CountDownLatch去等待3个工作线程完成操作:publicclassCountDownLa.

    2022年7月13日
  • x86汇编指令详解_x86汇编指令详解

    x86汇编指令详解_x86汇编指令详解——————————————一、数据传输指令———————————————它们在存贮器和寄存器、寄存器和输入输出端口之间传送数据。1.通用数据传送指令:MOV传送字或字节.MOVSX先符号扩展,再传送.MOVZX先零扩展,再传送.PUSH把字压入堆栈.POP把字弹出堆栈.PUSHA把AX,CX,DX

    2022年9月13日
  • IO流的分类_io流的作用

    IO流的分类_io流的作用IO流的分类可以分为以下三种:第一种:输入流和输出流按照流的流向来分,可以分为输入流和输出流。输入,输出都是从程序运行所在内存的角度来划分的。输入流:只能从中读取数据,而不能向其写入数据,由InputStream和Reader作为基类。输出流:只能向其写入数据,而不能从中读取数据。由OutputStream和Writer作为基类第二种:字节流和字符流字节流和字符流的用法几乎完全一样,区…

    2022年10月20日
  • hibernate与mybatisplus_Mybatis框架

    hibernate与mybatisplus_Mybatis框架最近做了一个Hibernate与MyBatis的对比总结,希望大家指出不对之处。第一章     Hibernate与MyBatisHibernate 是当前最流行的O/Rmapping框架,它出身于sf.net,现在已经成为Jboss的一部分。 Mybatis 是另外一种优秀的O/Rmapping框架。目前属于apache的一个子项目。MyBatis 参考资料官网:ht

    2022年9月11日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号