2015-12-01 98 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 它說無法識別的元素 '位置' –