zoukankan      html  css  js  c++  java
  • Asp.Net customErrors与httpErrors的区别

    先看一下简单的对比

    customErrors

    • Asp.Net级别的错误处理程序,只处理Asp.Net应用抛出的异常(404,403,500。。)
    • 在IIS7+的服务器依然可用(IIS7之前就引进了)
    • 静态文件(如.jpg.htm.js等)不会被处理

    httpErrors

    • IIS级别的错误信息处理程序,IIS根据请求指定错误页面
    • 自IIS7引进
    • 处理包括ASP.NET应用及ASP.NET之外的应用(ASP.NET能管的 它会管,ASP.NET不能管得它也管)
    • 所有的文件和URL都处理

    从对比中能看出 在IIS7之后  就没必要再用customErrors了,一切httpErrors都可以办了。

    复制代码
    <httpErrors errorMode="Custom" existingResponse="Replace">
        <remove statusCode="403" subStatusCode="-1" />
        <remove statusCode="404" subStatusCode="-1" />
        <error statusCode="403" prefixLanguageFilePath="" path="/403.png" responseMode="ExecuteURL" />
        <error statusCode="404" path="/404.aspx" responseMode="ExecuteURL" /> 
    </httpErrors>
    复制代码

    其实还可以用一个clear标签代替多个remove。如下

    <httpErrors errorMode="Custom" existingResponse="Replace">
        <clear />
        <error statusCode="403" prefixLanguageFilePath="" path="/403.png" responseMode="ExecuteURL" />
        <error statusCode="404" path="/404.aspx" responseMode="ExecuteURL" /> 
    </httpErrors>

    Note:ExecuteURL 只能用于同一个应用下的ASP.NET文件,如果想要重定向到另一个应用,或者一个完全不一样的完整的URL,我们需要将responseMode设为Redirect。

    <httpErrors errorMode="Custom" existingResponse="Replace">
      <clear />
      <error statusCode="404" path="http://www.bing.com" responseMode="Redirect"/>
    </httpErrors>

    现在通过不同的URL来看两者的区别

    给Web应用定义如下配置

    复制代码
     <system.web>
        <customErrors mode="On" defaultRedirect="Error.html">
            <error statusCode="403" redirect="/Error403" />
            <error statusCode="404" redirect="/Error404" />
            <error statusCode="500" redirect="/Error500" />
        </customErrors>
    </system.web>
    <system.webServer>
      <httpErrors errorMode="Custom" existingResponse="Auto" defaultResponseMode="ExecuteURL" >
        <remove statusCode="403"/>
        <remove statusCode="404"/>
        <remove statusCode="500"/>
        <error statusCode="403" responseMode="ExecuteURL" path="/Error403" />
        <error statusCode="404" responseMode="ExecuteURL" path="/Error404" />
        <error statusCode="500" responseMode="ExecuteURL" path="/Error500" />
      </httpErrors>
    </system.webServer>
    复制代码

    现在如果尝试访问以下链接,将会产生对应的错误

     
    URL Error StatusCode
    /aaaaaa  httpErrors  404
    /aaaaaa.aspx customErrors  404
    /aaaaaa.jpg httpErrors  404
    /throw500.apx customErrors  500
    /throw500 customErrors  500

    1. 一般情况 customErrors标签上的model属性设为RemoteOnly,httpErrors上的errorModel设为DetailedLocalOnly
    2. 如果你将某个页面的StatusCode设为500,不要忘了设置如下属性
      context.Response.TrySkipIisCustomErrors = true;

     相关参考:

    Custom 404 and error pages in ASP.NET

    IIS.NET  HTTP Errors

  • 相关阅读:
    【原创】VNC-view配置
    【LVM】LVM自动扩容脚本
    【linux磁盘分区--格式化】fdisk,parted,mkfs.ext3
    【原】Centos 7 下创建LVM流程
    【Spring-AOP-学习笔记-7】@Around增强处理简单示例
    【转】libvirt kvm 虚拟机上网 – Bridge桥接
    【phantomjs】使用phantomjs生成highChart的图片(待完善)
    【Redis】使用Redis Sentinel实现Redis HA
    【Redis】配置redis主从复制
    【转载】优秀博文转载
  • 原文地址:https://www.cnblogs.com/waw/p/5972951.html
Copyright © 2011-2022 走看看