清除部分的Web.config含义?

时间:2011-08-22 05:03:56

标签: asp.net web-config

我遇到过这样的代码:

    <modules>
        <remove name="ScriptModule"/>
        <remove name="YafTaskModule"/>
        <remove name="UrlRewriter"/>

        <add name="ScriptModule" preCondition="managedHandler" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
        <add name="YafTaskModule" type="YAF.Core.YafTaskModule, YAF.Core" preCondition="managedHandler"/>
        <add name="UrlRewriter" type="Intelligencia.UrlRewriter.RewriterHttpModule,Intelligencia.UrlRewriter" preCondition="managedHandler"/>
    </modules>

它有时会中断,例如,如果您的父AppDomain中没有UrlRewriter模块,则会引发错误。

使用方式有多安全:

    <modules>
        <clear/>

        <add name="ScriptModule" preCondition="managedHandler" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
        <add name="YafTaskModule" type="YAF.Core.YafTaskModule, YAF.Core" preCondition="managedHandler"/>
        <add name="UrlRewriter" type="Intelligencia.UrlRewriter.RewriterHttpModule,Intelligencia.UrlRewriter" preCondition="managedHandler"/>
    </modules>

<httpModules>和其他一些标签

中也是如此

1 个答案:

答案 0 :(得分:2)

<clear />的主要问题是它将清除所有祖先配置文件中的所有已配置元素,例如父文件夹,机器级web.config和machine.config。因此,在<httpModules>的情况下,清除将取出所有必要的ASP.NET模块,例如身份验证,会话状态管理,输出缓存等。如果您的应用程序依赖于某些模块,那么它将无法工作。

因此,解决方案是您必须在清除实际上正确解决问题的部分之后专门添加这些模块。缺点是您的配置文件可能有点冗长。