防止在子应用程序中继承不兼容的配置节

时间:2015-12-01 08:25:13

标签: entity-framework web-applications web-config

项目A.  使用实体框架4.4.0.0并在web.config

中具有以下条目
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=4.4.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />

项目B.  使用实体框架6.0.0.0并在web.config

中有下面的条目
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />

项目B在IIS中的项目A下托管(项目B是虚拟目录,后来转换为Web应用程序)

如果我访问项目B,它会在浏览器中显示实体框架的重复条目。

我评论了项目B中的条目

<!--<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />-->

这使得Project B运行,但是一旦它从数据库访问数据,就会抛出异常。

为entityFramework创建配置节处理程序时出错:无法加载文件或程序集'EntityFramework,Version = 4.4.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089'或其中一个依赖项。

我无法编辑Project A EF或Project B EF,因为我没有访问权限

有关如何处理此事的任何建议吗?

1 个答案:

答案 0 :(得分:1)

你可以通过禁止继承该部分来做到这一点。为此,您可以将此属性添加到父web.config中不应继承的内容:inheritInChildApplications="false"

如此处所解释的并非所有元素都支持它,所以也许您必须在父级中执行它,并重新定义应该继承的所有其他内容:How to stop inheritance of <configSections>in Web.Config这是一个很好的解决方案:{{3 }}

您还可以看到此asp.net日志的第7个提示:Avoid web.config inheritance in child web application using inheritInChildApplications