如何停止web.config继承

dan*_*ain 8 c# asp.net web-config

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

在子虚拟目录中使用Asp.Net 1.1 WebApplication.(这被设置为使用较旧的1.1 .net运行时,并配置了它自己的应用程序池.所以对于所有意图和目的是完全独立的.

除了它继续继承根网站的.net 3.5 web.config.

我试过添加

<location path="." inheritInChildApplications="false">
Run Code Online (Sandbox Code Playgroud)

到根网站web.config但它似乎不起作用.

实际上,错误很奇怪

<sectionGroup name="system.web.extensions" type="System.Web.Configuration.SystemWebExtensionsSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
Run Code Online (Sandbox Code Playgroud)

这是从.net 1.1运行时使用网站路径WEBSITE/OLD_WEBAPP报告的,但它是关于webSite(如.net 3.5中的)web.config以及它如何不理解sectionGroup标记上的type属性.

我究竟做错了什么?请告诉我这是显而易见的事情.谢谢

Kyl*_*ard 8

<location path="." inheritInChildApplications="false">
  <system.web>
    ...
  </system.web>
</location> 
Run Code Online (Sandbox Code Playgroud)

  • ......只有在system.web内部出现问题时才会有所作为.问题是它在错误中列出了一个sectionGroup元素,这个元素不会被修复. (2认同)

dan*_*ain 4

只是为了让大家知道,我已经找到了目前符合我目的的答案。

我最终将所有配置放在 .net 2.0 全局 web.config 中

C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\CONFIG
Run Code Online (Sandbox Code Playgroud)

我从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 应用程序将看不到这些部分。

感谢您提交此问题。希望以上信息对您有用。

微软发布于 22/02/2008 at 17:35

似乎对我有用,尽管它不像 .net 2.0 应用程序那么优雅。希望这对其他人有帮助。