【问题标题】:asp.net, web.config inheritence, and clearing the authentication settingasp.net、web.config 继承、清除认证设置
【发布时间】:2010-12-27 13:12:26
【问题描述】:

我有一个 ASP.net 1.1 应用程序。

在一个子文件夹中,我安装了 blogengine.net,它是一个 2.0 应用程序。

该文件夹被设置为一个应用程序并且使用了正确的框架。

它可以工作...除了身份验证。

问题是从根应用程序中的 web.config 继承。

此问题的常见解决方法是在嵌套应用的配置文件中为您要重置的每项内容使用“清除”。

<httpModules>
    <clear/>
</httpModules>

问题是身份验证标签中似乎不允许“清除”:

<authentication mode="Forms">
    <clear/>
    <forms... rest of my child app's settings for authentication...>
</authentication>

这样做会给我一个语法错误。

任何人都知道如何让这个工作?我需要防止 web.config 中根应用程序的身份验证信息在子应用程序中被继承。

更新:根据好奇极客的回答,一种选择是修改根配置以不允许继承。但是,我的理解是这也会阻止 system.config 属性。这通常是一个大问题吗?这不是我的服务器,所以想知道这样做是否会引发一些服务器管理员可能无法解决的安全问题。

【问题讨论】:

    标签: asp.net web-config blogengine.net


    【解决方案1】:

    您需要告诉父 web.config 否以强制子应用程序中的部分继承。

    如果您想停止 system.web 部分对子应用程序的继承,那么您将使用下面提到的 location 元素包装您的 system.web 部分。

      <location path="." inheritInChildApplications="false">
    
            <system.web>
    
            </system.web>
    
      </location>
    

    您也可以将此技术应用于连接字符串和应用设置部分的停止继承。

    PS:当你实际添加这个时 web.config 中的行,Visual Studio 将 不承认它是有效的并标记它 作为错误,但请放心,它 将在 IIS 下正常工作 部署。

    【讨论】:

    • 我的理解是,这也将排除系统配置设置应用于根应用程序。这是一个问题吗?
    • @this.__curious_geek 我发现我可以有多个 system.web 声明,所以效果很好,我只是将位置应用于仅包含我不想继承的项目的 system.web .效果很好。感谢您的帮助!
    猜你喜欢
    • 2011-11-11
    • 1970-01-01
    • 2010-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-10
    • 2010-09-26
    相关资源
    最近更新 更多