先看一下简单的对比

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. web.config中customErrors与httpErrors的区别

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

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

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

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

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

  4. Asp.Net MVC EF各版本区别

      2009年發行ASP.NET MVC 1.0版 2010年發行ASP.NET MVC 2.0版,VS2010 2011年發行ASP.NET MVC 3.0版+EF4,需要.Net4.0支持,VS2 ...

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

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

  6. asp.net &quot;callback&quot; 和 &quot;postback&quot; 的区别.

    下图解释了基于 asp.net的 "postback" 和 "callback"的生命周期: Postback 是在将 整个页面的数据 从 client 提交到 ...

  7. ASP.Net MVC与WebForm的区别

  8. Demystifying ASP.NET MVC 5 Error Pages and Error Logging

    出处:http://dusted.codes/demystifying-aspnet-mvc-5-error-pages-and-error-logging Error pages and error ...

  9. ASP.NET网站中设置404自定义错误页面

    在用ASP.NET WebForm开发一个网站时,需要自定义404错误页面. 做法是这样的 在网站根目录下建立了一个404.html的错误页面,然后在Global.asax文件中,加入如下代码: &l ...

随机推荐

  1. Hibernate入门详解

    学习Hibernate ,我们首先要知道为什么要学习它?它有什么好处?也就是我们为什么要学习框架技术? 还要知道    什么是Hibernate?    为什么要使用Hibernate?    Hib ...

  2. 破解Java to C# Converter

    起因 最近在对接一个第三方平台.该平台只提供了Java版本的SDK,C#版本的还处于敬请期待状态.由于C#可以复用绝大部分代码,便考虑找一个Java到C#的转换器,在试用了几个软件之后,发现还是Jav ...

  3. HTML页面禁止选择、页面禁止复制、页面禁止右键

    HTML页面内容禁止选择.复制.右键刚在一个看一个站点的源代码的的时候发现的,其实原来真的很简单 <body leftmargin=0 topmargin=0 oncontextmenu='re ...

  4. mysql 三种恢复方式

    为了保障数据的安全,需要定期对数据进行备份.备份的方式有很多种,效果也不一样.一旦数据库中的数据出现了错误,就需要使用备份好的数据进行还原恢复.从而将损失降到最低.下面我们来了解一下MySQL常见的有 ...

  5. 【python】selenium+python自动化测试环境搭建

    参考资料: http://www.cnblogs.com/fnng/archive/2013/05/29/3106515.html http://www.easonhan.info/python/20 ...

  6. runc kill 和 delete流程分析

    runc kill // kill sends the specified signal (default: SIGTERM) to the container's init process 1.ru ...

  7. SQL注入备忘单

    Find and exploit SQL Injections with free Netsparker SQL Injection Scanner SQL Injection Cheat Sheet ...

  8. nginx生产配置

    user www www; worker_processes 8; error_log /data/logs/nginx_error.log crit; pid /usr/local/webserve ...

  9. WPFの单例模式

    版本一: /// <summary>/// A simple singleton class implements./// </summary>public sealed cl ...

  10. 响应式嵌入 iframe Pym.js

    Pym.js 可以让你在嵌入 iframe 的时候可自动的对 iframe 的大小进行调整以适应父一层容器,并且可以避免跨域问题. 支持浏览器: Internet Explorer 9, 10 (Wi ...