2014-10-01 75 views
0

我在.net 4.5程序中使用實體框架和oracle客戶端(odp.net)。EF with oracle - 「在配置中找不到指定的存儲提供程序,或者無效。」

在生產機器,我得到以下錯誤:

System.ArgumentException: The specified store provider cannot be found in the configuration, or is not valid. ---> System.ArgumentException: Unable to find the requested .Net Framework Data Provider. It may not be installed. 
    at System.Data.Common.DbProviderFactories.GetFactory(String providerInvariantName) 
    at System.Data.EntityClient.EntityConnection.GetFactory(String providerString) 

開發機器上沒有錯誤。 生產計算機上還有其他的.net程序可以使用odp.net成功運行在oracle上。 這些舊程序使用.net 3.5。

我知道,因爲.net 4.5是在Orcale客戶端安裝之後安裝的,所以oracle 數據訪問組件未在.net 4.5 machine.config中註冊。 我試着將3.5 machine.config中的system.data部分複製到應用程序的配置文件中 - 但它沒有幫助。 重新安裝Oracle客戶端並不是我們想要做的 - 因爲其他應用程序工作正常。

我還注意到,開發機器和生產之間的ODP.Net版本有一點點不同。 我的項目沒有任何對oracle.dataaccess.dll的引用。

回答

0

您可以在生產機器上運行ODAC的Oracle安裝程序嗎?這將創建所需的machine.config條目。

同樣在目前可用的測試版中,我們提供了一個「本地」安裝,它修改了網頁或應用配置而不是機器配置。

+0

重新安裝ODAC是否對其他應用程序有害,對odp.net可以正常工作? – 2014-10-02 07:37:17

+0

我試着用手修改machine.config。現在得到:System.Data.ProviderIncompatibleException:商店提供者工廠類型「Oracle.DataAccess.Client.OracleClientFactory」沒有實現IServiceProvider接口。使用實現此接口的商店提供商 – 2014-10-02 07:43:19

+0

最初,請勿手動修改它。運行安裝程序並查看安裝程序正在執行的操作。 – 2014-10-02 17:46:45

0

可能你剛剛在64位操作系統上安裝了32位版本。在運行時您還需要安裝64位版本。

請務必將TNS的文件,並安裝reastart

0

後,如果你是一個64位系統上,確保您的ASP.NET應用程序正在使用的應用程序池允許32位應用程序。使用管理工具下的Internet信息服務(IIS)管理器工具來配置您的Web應用程序和相應的池。 (在IIS管理器中找到池,右鍵單擊它並選擇高級設置。)否則,您的應用程序可能會以64位模式運行,並尋找64位版本的Oracle數據提供程序,該數據提供程序可能不存在於您的機。

相關問題