项目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,因为我没有访问权限
有关如何处理此事的任何建议吗?
答案 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