IIS7.5下的web.config 404应该如何配置

原文地址:http://www.jianfangkk.com/aspnet/201412/185

IIS环境下web.config的配置的问题,在IIS7.5中添加配置404页面时遇到了一些问题,记录如下:

一开始在<customError>下的<error>节点配置404不起作用,由于程序运行在IIS7.5集成模式下,经过MSDN和GOOGLE,发现需要在<system.webServer>节点中配置。

我们知道<system.web>节点是iis7.0之前版本的主要配置节点,由于在II7.0以后IIS管道处理与ASP.NET管道处理进行了集成,这样提高了ASP.NET的处理性能,具体这方面的资料请GOOGLE,问题随之而来,新增加的

<system.webServer>节点中需要进行哪些修改以程序在IIS7的集成模式下能完全生效呢,主要包含以下几个方面:

(1) <modules> -----相当于<system.web>中的<httpModules>

(2) <handlers> -----相当于<system.web>中的<httpHandlers>

(3) <customError>下的<error>----相当于<system.web>中的<httpErrors>

以上三点中,如果你的程序中有自定义的httpModules或者httpHandlers的话,那么第一点和第二点非常重要,具体资料请MSDN明白了这些,配置也就不难了,如下:

<httpErrors errorMode="DetailedLocalOnly">

<remove statusCode="404"/>

<error statusCode="404" path="/404.htm" responseMode="ExecuteURL"/>

</httpErrors>

补充说明:

errorMode有三个值,分别为Custom、DetailedLocalOnly、Detailed

意思为对用户与服务器端始终显示自定义页面、只能服务器端显示详细出错信息、对用户与服务器端始终显示详细出错信息。

responseMode有File、ExecuteUrl、Redirect三个层,

分别表示使用服务器端静态文件、可执行的URL、URL转向。

要注意:<httpErrors>与<customErrors>是不同的,前者主要用于处理http相关的错误信息,而后者主要是处理应用程序级的错误页转向

附<customErrors>的一些细节说明:

同样,如果Application_Error和<customerErrors>同时存在,也存在执行顺序的问题。

因为优先级Application_Error事件> <customErrors>配置项,所以发生应用程序级错误时,优先执行Application_Error事件中的代码,如果Application_Error事件中调用了Server.ClearError()函数,

<customerErrors>配置节中的defaultRedirect不起作用,因为Exception已经被清除;

如果Application_Error事件中没用调用了Server.ClearError()函数,错误页会重新定位到defaultRedict指定的URL页面,为用户显示友好出错信息。

通过对.NET提供的以上四种错误处理机制的分析,我们可以把它们从不同的角度分类,便于我们理解和使用。

1.从功能上分类:

用于异常处理(Handling exceptions)是Page_Error事件和Application_Error事件;

用户错误页面重定向(Redirecting the user to an error page)的是 ErrorPage属性 和 <customErrors>配置项。

2.从错误处理的范围分类:

用于页面级(Page level)错误处理的是Page_Error事件 和 ErrorPage属性;

用于应用程序级(Application level)错误处理的是Application_Error事件 和 <customErrors>配置项。

时间: 2024-10-12 15:24:31

IIS7.5下的web.config 404应该如何配置的相关文章

关于IIS7.5下的web.config 404 配置的一些问题

本文介绍一个关于IIS环境下web.config配置的经验问题.在IIS7.5中添加配置404页面时遇到了一些问题,记录如下: 一开始在<customError>下的<error>节点配置404不起作用,由于程序运行在IIS7.5集成模式下,经过MSDN和GOOGLE, 发现需要在<system.webServer>节点中配置, 我们知道<system.web>节点是iis7.0之前版本的主要配置节点,由于在II7.0以后IIS管 道处理与ASP.NET管道

移除apsx视图引擎,及View文件夹下的web.config的作用

<> 使用Rezor视图引擎的时候移除apsx视图引擎 Global.asax文件 using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Http; using System.Web.Mvc; using System.Web.Routing; namespace MvcApp { // 注意: 有关启用 IIS6 或 IIS7 经典模式的说明,

App.config和Web.config配置文件的自定义配置节点

前言 昨天修改代码发现了一个问题,由于自己要在WCF服务接口中添加了一个方法,那么在相应调用的地方进行更新服务就可以了,不料意外发生了,竟然无法更新.左查右查终于发现了问题.App.config配置文件中的配置貌似出现了问题.查找节点发现是如下节点: <configSections> <section name="Test1" type="Demo.Section1,Demo"/> .............. </configSect

加密web.config中的邮件配置mailSettings

加密: 在命令提示符下键入: aspnet_regiis -pef connectionStrings 要加密的web.config完整路经 演示样例:C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC>aspnet_regiis -pef "connectionStrings" "D:\Scode\cpb2cNew\branches\trunk\src\client\CP.Client" 解密: 在命

移除apsx视图引擎,及View目录下的web.config的作用

<> 使用Rezor视图引擎的时候移除apsx视图引擎 Global.asax文件 using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Http; using System.Web.Mvc; using System.Web.Routing; namespace MvcApp { // 注意: 有关启用 IIS6 或 IIS7 经典模式的说明.

IIS7 无法写入配置文件web.config 错误

FTP上传了一个Asp.Net程序的.zip压缩包到服务器,解压并放到wwwroot下一子目录,并在iis里把该目录设为[虚拟目录],去修改[默认文档]时,提示错误 -- “无法写入配置文件web.config ”,并且浏览器访问报 -- “HTTP 500错误”!以前操作那么多次iis也从未遇到这么诡异的问题! 经过一个非常纠结的排错过程,找出一个绝对意想不到的错误根源: 意识到犯了个错误--没有把该目录转为[应用程序], 选择转为[应用程序],但问题如故. 查了一下web.config文件属

web.config 中SessionState的配置

web Form 网页是基于HTTP的,它们没有状态, 这意味着它们不知道所有的请求是否来自同一台客户端计算机,网页是受到了破坏,以及是否得到了刷新,这样就可能造成信息的丢失. 于是, 状态管理就成了开发网络应用程序的一个实实在在的问题.    在ASP中能够通过Cookie .查询字符串. 应用程序.会话(Session) 等轻易解决这些问题.现在在ASP.NET环境中,我们依然可以使用这些功能,并且功能更加强大.状态管理分为服务端和客户端两种情况, 这里只是介绍 服务端状态管理: 与Appl

web.config 中SessionState的配置 &lt;转&gt;

原文地址:http://blog.csdn.net/nihongyuan/article/details/4139928 web Form 网页是基于HTTP的,它们没有状态, 这意味着它们不知道所有的请求是否来自同一台客户端计算机,网页是受到了破坏,以及是否得到了刷新,这样就可能造成信息的丢失. 于是, 状态管理就成了开发网络应用程序的一个实实在在的问题.    在ASP中能够通过Cookie .查询字符串. 应用程序.会话(Session) 等轻易解决这些问题.现在在ASP.NET环境中,我

web.config中namespace的配置(针对页面中引用)

1,在页面中使用强类型时: @model GZUAboutModel @using Nop.Admin.Models//命名空间(注意以下) 2,可以将命名空间提到web.config配置文件中去,此时的引用变为: @model GZUAboutModel//页面中只需要这一行代码 2.1在web.config配置文件中需要这样做. 第一步,namespace中添加节点 <namespaces> <add namespace="Nop.Admin.Models" /&