2009-12-17 83 views
0

我有一个ASP.net 1.1应用程序。asp.net,web.config继承,并清除身份验证设置

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

该文件夹被设置为一个应用程序,并使用适当的框架。

它的工作原理除了验证。

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

这个问题的常见解决方法是在嵌套应用程序的配置文件中为每个要重置的对象使用“清除”。

<httpModules> 
    <clear/> 
</httpModules> 

的问题是,“清除”似乎并不被允许认证标签内:

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

这样做,让我一个语法错误。

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

更新:每curious_geek的答案,一个选项是修改根配置不允许继承。不过,我的理解是,也会阻止system.config的属性。这通常是一个大问题?这不是我的服务器,所以不知道这样做是否会带来一些安全问题,而这些安全问题可能与服务器管理员无法解决。

回答

3

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

如果你想停止system.web节继承到child-app,那么你会用下面提到的location元素包装你的system.web节。

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

     <system.web> 

     </system.web> 

    </location> 

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

PS:当你真正在web.config中添加此 线,Visual Studio将 无法辨别是否为有效,并将其标志 为错误,但放心,它 将IIS下很好地工作当部署 时。

+0

我的理解是,它也会排除系统配置设置被应用到根应用程序。这是一个问题吗? – 2009-12-17 13:47:15

+0

@this .__ curious_geek我发现我可以有多个system.web声明,这样工作起来很棒,我只是将这个位置应用到只包含我不想继承的项目的system.web。很棒。谢谢您的帮助! – 2009-12-18 15:47:51