1

我有一个 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 属性。这通常是一个大问题吗?这不是我的服务器,所以想知道这样做是否会引发一些服务器管理员可能无法解决的安全问题。

4

1 回答 1

4

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

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

  <location path="." inheritInChildApplications="false">

        <system.web>

        </system.web>

  </location>

您也可以应用此技术来停止连接字符串和 appsettings 部分的继承。

PS:当你在 web.config 中实际添加这行时,Visual Studio 不会将其识别为有效并将其标记为错误,但请放心,它在部署时在 IIS 下可以正常工作。

于 2009-12-17T07:22:47.390 回答