zoukankan      html  css  js  c++  java
  • 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>配置项。

  • 相关阅读:
    linux下shell显示-bash-4.1#不显示路径解决方法
    update chnroute
    An error "Host key verification failed" when you connect to other computer by OSX SSH
    使用dig查询dns解析
    DNS被污染后
    TunnelBroker for EdgeRouter 后记
    mdadm详细使用手册
    关于尼康黄的原因
    Panda3d code in github
    Python实例浅谈之三Python与C/C++相互调用
  • 原文地址:https://www.cnblogs.com/jianfangkk/p/4152051.html
Copyright © 2011-2022 走看看