欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  网络运营

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

程序员文章站 2022-04-06 20:25:21
本文介绍一个关于iis环境下web.config配置的经验问题。在iis7.5中添加配置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管道处理进行了集成,这样提高了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>配置项。

希望本文能对使用iis7.0及iis7.5的朋友们有帮助:)