如何停止web.config继承

8

好的

我在Windows Server 2003 (32位)上的IIS6中有一个Asp .net 3.5网站。

其中包含一个Asp.Net 1.1 Web应用程序,位于子虚拟目录中。(此设置用于使用较旧的1.1 .net运行时,并配置了自己的应用程序池。因此,在所有方面都是完全分离的。)

但它一直继承根网站的 .net 3.5 web.config。

我尝试添加

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

我尝试将内容添加到根网站的web.config文件中,但似乎没有起作用。

奇怪的是,实际上出现了以下错误:

<sectionGroup name="system.web.extensions" type="System.Web.Configuration.SystemWebExtensionsSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">

有一份报告来自.NET 1.1运行时,涉及到网站路径WEBSITE/OLD_WEBAPP,但它在抱怨webSite(即.NET 3.5版本的)web.config文件,并且不理解sectionGroup标签上的type属性。

我做错了什么?请告诉我这是明显的错误。谢谢。

3个回答

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

此外,请确保您已在IIS中为子文件夹创建了“虚拟目录”。 - Kyle B.
1
只有当父进程和子进程都是.NET 2.0应用程序时,才能正常工作。 - Adam Sills
2
...只有在系统内部的某些内容引起问题时才会产生影响。问题中提到了在错误中列出了一个sectionGroup元素,这不会通过此方法得到修复。 - Adam Sills
正如Adam Sills所说,只有当父类和子类都是.NET 2.0时才能工作,不幸的是我的子类是.NET 1.1。 - danswain

4

告诉大家一声,我已经找到了一个暂时满足我的需求的答案。

最终,我把所有配置都放在了 .net 2.0 全局 web.config 文件中。

C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\CONFIG

我从connect.microsoft.com的评论中得到了这个建议。
ASP.NET 1.1和2.0的配置系统都是分层级的。因此,如果不同的框架版本是根网站(通常为inetpub \ wwwroot)的子级,则子级中的配置系统将尝试合并来自根网站的配置信息。由于1.1和2.0配置系统遍历物理目录结构寻找父web.config,所以这种行为是有意设计的。
一个简单的解决方法是将公共的2.0配置信息移动到2.0框架的根web.config文件中。根web.config位于C:\ windows \ Microsoft.NET \ Framework \ v2.0.50727 \ CONFIG。采用这种方法,所有2.0应用程序都将获取公共部分,而1.1应用程序则看不到这些部分。
感谢您提交此问题。希望上述信息对您有用。
Microsoft在2008年2月22日17:35发布了此评论。
这对我来说似乎有效,虽然不如它本来是一个.net 2.0应用程序那样优雅。希望这能帮助其他人。

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接