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

之前一直知道设置web.config(其实就是xml文件)的customErrors的error来指向自定义的错误页的URL,但是今天在调试的时候发现customErrors无法跳转到自定义的页面,在网上找了半天才了解还有httpErrors可以设置跳转自定义错误页。

web.config文件如下

<?xml version="1.0"?>
<configuration>
  <system.web>
    <compilation debug="true" targetFramework="4.5"/>
    <httpRuntime targetFramework="4.5"/>
    <customErrors defaultRedirect="ErrorPages\CustomErr.html" mode="On">
      <error statusCode="403" redirect="ErrorPages\CustomErr403.html"/>
      <error statusCode="404" redirect="ErrorPages\CustomErr404.html"/>
    </customErrors>
  </system.web>
  <system.webServer>
    <httpErrors errorMode="Custom" defaultResponseMode="File">
      <error statusCode="404" subStatusCode="0" path="ErrorPages\HttpErr404.html"/>
    </httpErrors>
  </system.webServer>
</configuration>

简单来说,存取静态档案(如.js、.html、.css、.jpg…)发生错误会依照httpErrors设定办事;

由.NET处理程序接手的URL(例如:.aspx、.ashx、.svc、MVC注册路由),出错时则看customErrors裡的设定。

http://localhost:2413/Default.aspx    --->正确的url

http://localhost:2413/Default1111.aspx     --->由customErrors控制

http://localhost:2413/Default.aspx1111      --->由httpErrors控制

详细的解释可以访问下面链接

http://blog.csdn.net/a351945755/article/details/21003249

http://blog.darkthread.net/post-2015-11-10-customerrors-and-httperrors.aspx

原文如下

被抽考IIS網站的自訂HTTP 404錯誤網頁設定,學到新東西也釐清一些觀念,筆記備忘。

以Windows 2008 R2 IIS 7.5為例,網站管理介面有兩處可以自訂錯誤頁面,上方的ASP.NET區的.NET Error Pages與下方IIS區的Error Pages:

兩個設定介面有點不同,試著各自加上HTTP 404設定,但導向不同網頁,.NET Error Pages設定指向/NotFound/SystemWeb404.html:

Error Pages指向/NotFound/SystemWebServer404.html

設定結果會反應在web.config,.NET Error Pages設定被寫入system.web/customErrors,Error Pages則是寫到system.webServer/httpErrors

排版顯示純文字

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.web>
        <customErrors mode="On">
    <error statusCode="404" redirect="/NotFound/SystemWeb404.html"/>
        </customErrors>
    </system.web>
    <system.webServer>
        <urlCompression doDynamicCompression="true" />
        <httpErrors>
            <remove statusCode="404" subStatusCode="-1" />
            <error statusCode="404" prefixLanguageFilePath=""
              path="/NotFound/SystemWebServer404.html" responseMode="ExecuteURL" />
        </httpErrors>
    </system.webServer>
</configuration>

這兩個設定有什麼不同呢?簡單來說,存取靜態檔案(如.js、.html、.css、.jpg…)發生錯誤會依照httpErrors設定辦事;由.NET處理程序接手的URL(例如:.aspx、.ashx、.svc、MVC註冊路由),出錯時則看customErrors裡的設定。

以下是簡單示範,輸入不存在的blah.gif看到的是SystemWebServer404.html、輸入不存在的blah.aspx則是SystemWeb.404.html,故得證。

補充一點:httpErrors有個errorMode屬性,預設為DetailedLocalOnly,相當於customErrors mode="RemoteOnly",故在本機測試將看不到自訂錯誤頁,要改成Custom才看得到。這是IIS 7起加入的行為,還停在IIS 6的腦袋沒意識到有差異,花了點時間才搞定,特別加記一筆。

时间: 2024-08-04 03:40:21

[ASP.net]web.config的customErrors与httpErrors的区别的相关文章

web.config中customErrors与httpErrors的区别

打开IIS,我们发现会有两个处理错误页的地方,见下图: 进行不同的设置之后,我们发现设定结果会反应在web.config: .NET Error Pages设定被写入system.web/customErrors, Error Pages则是写到system.webServer/httpErrors: 结论: 简单来说,存取静态档案(如.js..html..css..jpg…)发生错误会依照httpErrors设定办事: 由.NET处理程序接手的URL(例如:.aspx..ashx..svc.M

ASP.NET web.config中&lt;customErrors&gt;节点说明

customErrors>节点用于定义一些自定义错误信息的信息.此节点有Mode和defaultRedirect两个属性,其中defaultRedirect属性是一个可选属性,表示应用程序发生错误时重定向到的默认URL,如果没有指定该属性则显示一般性错误.Mode属性是一个必选属性,它有三个可能值,它们所代表的意义分别如下: Mode 说明On 表示在本地和远程用户都会看到自定义错误页面.Off 禁用自定义错误信息,本地和远程用户都会看到详细的错误信息.(默认)RemoteOnly 表示本地用户

Asp.net Web.Config - 配置元素customErrors

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

Asp.net Web.Config - 配置元素 caching

记得之前在写缓存DEMO的时候,好像配置过这个元素,好像这个元素还有点常用. 一.caching元素列表 元素 说明 cache 定义全局应用程序缓存设置. 可选的元素. outputCache 指定应用程序范围的输出缓存设置. 可选的元素. outputCacheSettings 指定可以应用于应用程序中页的输出缓存设置. 可选的元素. sqlCacheDependency 为 ASP.NET 应用程序配置 SQL 缓存依赖项. 可选的元素. 1.cache 属性 特性 说明 disableM

Asp.net Web.Config - 配置元素 httpCookies

1.属性 属性 说明 domain 可选的 String 属性. 设置 Cookie 域名. httpOnlyCookies 可选的 Boolean 属性. 脚本(javascript之类)能够访问 默认值为 false. requireSSL 可选的 Boolean 属性. 获取一个指示是否需要安全套接字层 (SSL) 通信的值. 默认值为 false. 该设置将被公开 requireSSL 配置的任何其他功能(如 authentication 的 forms 元素(ASP.NET 设置架构)

Asp.net Web.Config - 配置元素 trace

一.trace的元素的属性 属性 说明 enabled 是否启用应用程序跟踪.为了使用 Trace.axd 查看器,必须启用跟踪.默认情况下,Trace.axd 查看器被添加到httpHandlers 元素. 可选的 Boolean 属性. 默认值为 false. localOnly 指定跟踪查看器 (Trace.axd) 是否只用于主机 Web 服务器.如果是 false,则跟踪查看器可用于任何计算机.默认情况下,Trace.axd 查看器被添加到 httpHandlers 元素. 可选的 B

说一说ASP.NET web.config 加密及解密方法 (代码)

/// <summary> /// 保护web.config的加密和解密 /// </summary> public class ProtectHelper { /// <summary> /// 解密 /// </summary> /// <param name="pToDecrypt">加密连接字符串</param> /// <param name="sKey">自定义密钥<

asp.net web.config 网载文章重新复习一下

在开发中经常会遇到这样的情况,在部署程序时为了保密起见并不将源代码随项目一同发布,而我们开发时的环境与部署环境可能不一致(比如数据库不一样),如果在代码中保存这些配置这些信息部署时需要到用户那里更改代码再重新编译,这种部署方式非常麻烦.在.net中提供了一种便捷的保存项目配置信息的办法,那就是利用配置文件,配置文件的文件后缀一般是.config,在asp.net中配置文件名一般默认是web.config.每个web.config文件都是基于XML的文本文件,并且可以保存到Web应用程序中的任何目

asp.net web.config配置节说明

web.config 文件查找规则:      (1)如果在当前页面所在目录下存在web.config文件,查看是否存在所要查找的结点名称,如果存在返回结果并停止查找.      (2)如果当前页面所在目录下不存在web.config文件或者web.config文件中不存在该结点名,则查找它的上级目录,直到网站的根目录.      (3)如果网站根目录下不存在web.config文件或者web.config文件中不存在该节点名则在%windir%"Microsoft.NET"Frame