先看一下简单的对比

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

Asp.Net customErrors与httpErrors的区别的更多相关文章

  1. [ASP.net]web.config的customErrors与httpErrors的区别

    之前一直知道设置web.config(其实就是xml文件)的customErrors的error来指向自定义的错误页的URL,但是今天在调试的时候发现customErrors无法跳转到自定义的页面,在 ...

  2. web.config中customErrors与httpErrors的区别

    打开IIS,我们发现会有两个处理错误页的地方,见下图: 进行不同的设置之后,我们发现设定结果会反应在web.config: .NET Error Pages设定被写入system.web/custom ...

  3. [转帖]Asp.Net MVC EF各版本区别

    Asp.Net MVC EF各版本区别 https://www.cnblogs.com/liangxiaofeng/p/5840754.html 2009年發行ASP.NET MVC 1.0版 201 ...

  4. 新建网站与新建Asp.Net Web 应用程序的区别

    .net网站和应用程序区别,网站是动态执行的不用编译,他只依赖于自己的文档本身,甚至你用aspx里直接写jsp代码都可以,其实网站可以说只是在.net平台中打开的文档,相当于最初的记事本编码,他并不需 ...

  5. MVC ASP.NET MVC各个版本的区别

    ASP.NET MVC各个版本的区别 Net Framework4.5是不支持安装在window server 2003上,如非装请用net framework4.0; MVC1.0 publsh t ...

  6. Asp.Net IEnumerable,ICollection,IList,List区别

    做C#的同学们,都知道,一类只能有一个继承类,但可以实现多个接口.这句话就告诉我们:IEnumerable,ICollection,IList,List区别了 首先我看看 IEnumerable: / ...

  7. js Jquery字符UrlEncode 编码 C#(asp.net)解码 Server HttpUtility 区别 cookies存中文

    一.Js asp.net 交互Url编码解码 C#(asp.net)编码:HttpUtility.UrlEncode(url) Jquery解码:decodeURIComponent(url); Jq ...

  8. ASP.Net Session, Cookie, Cache的区别

    Session—管理用户会话状态 什么是状态管理? 指对同一页或不同页的多个请求维护状态和页信息的过程 为什么要进行状态管理? Web页是无状态的,不保存任何用户请求信息,而且到服务器的每一往返过程都 ...

  9. 【ASP.net】Equals 和 == 的区别

    在比较Equals 和 ==的区别前.我们先来了解下相关的知识 C#数据类型 1.值类型 值类型有: 值类型包括:简单类型.结构类型.枚举类型:引用类型包括:Object 类型.类类型.接口.代表元. ...

随机推荐

  1. linux 管道命令 竖线 ‘ | ’

    管道符号,是unix功能强大的一个地方,符号是一条竖线:"|", 用法: command 1 | command 2 他的功能是把第一个命令command 1执行的结果作为comm ...

  2. ORA-24550错误

    [oracle@app-148-39 oracledata]$ sqluldr2_linux64_10204.bin USER=xxx/xxx@xxx:1521 charset=AL32UTF8 QU ...

  3. 9月15日,YTFCloud,创业圈的技术新宠

    成都创业圈近期什么最热? 资本复苏?这本来就是高低起伏规律而已,再说动辄千万的大手笔,对于创业新人.新团队来说太遥远,早期根本无法变现,而资金紧张.项目开发费用超标.没有技术大牛保障等尖锐现实问题能否 ...

  4. Java 字符串用逗号并接

    for (int t = 0; t < memberLen; t++) {  memTemp = stafferMap.get(strMember[t]);  if(memTemp != nul ...

  5. html写法对gzip压缩率的影响

    前几天在群里看到小杜分享一篇文章,<html写法对gzip压缩率的影响>,为此我也对这点分析了一下.不知道大家有没有看过这文章,作者是来自微博懒懒交流会,其内容我这里先简述一下. Gzip ...

  6. Poj-1088-滑雪

    此题为动态规划加搜索型题目 采用记忆化搜索的方式 dp[i][j]表示从坐标为 i,j 开始滑所能达到的最长距离 则dp[i][j]=max(dp[i-1][j],dp[i][j+1],dp[i+1] ...

  7. 使用页面Tag判断某个值为空值时,不能使用logic:equal(无效),可以使用logic:notPresent

    使用页面Tag判断某个值为空值时,不能使用logic:equal(无效),可以使用logic:notPresent

  8. JBoss 系列四十八:JBoss 7/WildFly 使用TCP构建集群

    我知道JBoss 集群Default 的设定就是UDP(JGroups),但在实际环境中的网络环境时常不允许UDP,在这种情况下,我们就需要使用TCP. JBoss 7/WildFly 中负责集群的主 ...

  9. 新公司入职第一天遇到的 关于 CSS 单行溢出文本显示省略号...的问题

    上班第一天 前端岗位,因为公司这个项目是标准开发 所以没法用框架在打架页面,好吧 我手写 各种div 各种css样式 好不忧伤,好吧 不废话了 进入正题. 想在导航栏中的 客户信息 功能点 实现溢出用 ...

  10. 进程状态转换、CPU调度算法

    进程的状态转换 进程在运行中不断地改变其运行状态.通常,一个运行进程必须具有以下三种基本状态. 进程状态 执行态run:进程正在使用CPU 等待态wait:进程正在等待I/O完成,不在使用也不能使用C ...