2015-12-01 81 views
1

项目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" />--> 

这使得项目B运行进入,但是从数据库,一旦它访问数据,则抛出异常。

为entityFramework创建配置节处理程序时发生错误:无法加载文件或程序集“EntityFramework,Version = 4.4.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089”或其某个依赖项。

我不能编辑项目A EF或项目B EF,因为我没有访问

如何处理这个有什么建议?

+0

你试图做这样的事情? http://stackoverflow.com/questions/2460542/using-different-versions-of-the-same-assembly-in-the-same-folder#2461746 –

+1

我不明白什么是父母和孩子的应用程序,或什么它将托管一个应用程序在另一个。这是关于什么?当它说“重复输入”时,你会怎么做?什么是“重复条目”?请尝试改善您的问题。 – JotaBe

+0

谢谢@AmitKumar或许这是我的错,不了解这个问题,但现在问题是完美的。我希望我的回答能帮助你。 – JotaBe

回答

1

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

如上所述,并非所有元素都支持它,因此您可能必须在父级中执行此操作,并重新定义所有应该继承的其他东西:How to stop inheritance of <configSections>in Web.Config这是它的一个很好的解决方案:Avoid web.config inheritance in child web application using inheritInChildApplications

你也可以看到这个asp.net日志第七届提示:10 Things ASP.NET Developers Should Know About Web.config Inheritance and Overrides

+0

它是有帮助的..但他们说你不能在配置部分使用这个 –

+0

使用位置技巧在http://stackoverflow.com/questions/782252/avoid-web-config-inheritance-in-child-web-application- using-inheritinchildapplic使用点位置包装,即'location path ='。'',指的是.config文件所在的位置。这解决了你的问题。 – JotaBe

+0

我做过 \t

\t 它说无法识别的元素 '位置' –