2011-09-29 167 views
3

在我的項目中,我一起使用了oracle和實體框架。我的兩臺機器中的開發人員機器win7和我的服務器win2008r2我安裝了oracle beta實體框架和。網絡4.0框架。ORACLE和實體框架。錯誤:在配置中找不到指定的存儲提供程序或無效

但是我的項目工作的本地機器上,並在服務器上給錯誤不起作用:

the specified store provider cannot be found in the configuration or is not valid 
SystemArgumentException unable to find the requested .net Framework data provider ... 

任何人都可以幫我嗎?

+0

聽起來像這個問題? :http://stackoverflow.com/questions/2433749/deploying-applications-that-use-linq-to-entities –

回答

2

簡而言之:不要使用ODAC.net驅動程序,而要使用oracle客戶端完成安裝。修改ODAC組件可能會有點不便。所以安裝最新版本的oracle客戶端到所有的機器都很好。

  • 舊的答案 - 對於這兩臺機器,我安裝了第一個oracle數據提供程序.net,然後是oracle beta實體框架提供程序。所以對於這兩臺機器,我有多個Oracle客戶端實例。

在我的開發機器中,將oracle beta實體框架配置爲默認客戶端。 - 我不知道什麼時候/如何改變/誰改變 -

在服務器默認提供程序仍然是舊的odp.net。

將服務器上的默認提供程序更改爲oracle beta實體框架提供程序後,它已更改。

再次感謝。

11

在應用程序池和高級設置...

看一看「啓用32位應用程序」,並查看是否已啓用它。它沒有設置在我的Windows 7 64位上,而且我遇到了同樣的問題。

我猜測它也可以通過安裝64位ODAC來解決,但還沒有嘗試過。

+0

這爲我解決了它。就我而言,我使用的是32位的ODAC 12.1託管數據訪問驅動程序,但Windows 7上的IIS默認情況下未配置爲運行32位。 –

+0

這個答案讓我朝着正確的方向去解決問題。 Mine需要修改64位4.0框架的Machine.Config文件。我試圖通過.NET控制檯應用程序訪問Oracle數據庫,但一直得到與OP相同的異常。在修改64位Machine.Config以包含Oracle數據庫提供程序後,它工作正常。我基本上將32位Machine.Config for Oracle中的內容複製到64位Machine.Config。 – Jagd

+0

我認爲最後一件事是我專門安裝了64位版本的管理驅動程序。我想這只是一個64位安裝程序。 –

0

我們在Windows 2012服務器上安裝我們的應用程序,我們得到相同的錯誤,我們試圖在32位模式下運行應用程序,但結果相同。 我們試圖通過控制檯應用程序獲取機器中安裝的DbProviderFactories列表,並發現ODP.net託管驅動程序缺失。 它終於工作,當我們運行批處理文件,我們發現

2

我以前有這個問題。我跟着這些指示,然後它解決了: 與Windows 10的x64

1-安裝Visual Studio 2015年

2 - 從http://www.oracle.com/partners/campaign/utilsoft-086879.html安裝ODAC。

  • 從在步驟#2中配置 http://www.oracle.com/technetwork/topics/dotnet/downloads/odacmsidownload-2745497.html

  • 拷貝TNSNAMES文件女巫安裝ODTforVS2015並將其粘貼到步驟3#目的地安裝的網絡文件夾中。

  • 更改C:\ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ Config \ Machine。配置<system.Data>標籤是這樣的:

    <system.data> 
    <DbProviderFactories> 
        <add name="ODP.NET, Unmanaged Driver" invariant="Oracle.DataAccess.Client" description="Oracle Data Provider for .NET, Unmanaged Driver" type="Oracle.DataAccess.Client.OracleClientFactory, Oracle.DataAccess, Version=4.121.1.0, Culture=neutral, PublicKeyToken=89b483f429c47342" /> 
    <add name="ODP.NET, Managed Driver" invariant="Oracle.ManagedDataAccess.Client" description="Oracle Data Provider for .NET, Managed Driver" type="Oracle.ManagedDataAccess.Client.OracleClientFactory, Oracle.ManagedDataAccess, Version=4.121.2.0, Culture=neutral, PublicKeyToken=89b483f429c47342" /> 
    </DbProviderFactories> 
    </system.data> 
    
  • 在web.config中加入這一行的Web應用程序,或在App.config中,如果它是控制檯應用程序。在<configurations> </configurations>標記下(不在裏面)。

    <system.data> 
        <DbProviderFactories> 
         <add name="ODP.NET, Managed Driver" invariant="Oracle.ManagedDataAccess.Client" description="Oracle Data Provider for .NET, Managed Driver" type="Oracle.ManagedDataAccess.Client.OracleClientFactory, Oracle.ManagedDataAccess, Version=4.121.2.0, Culture=neutral, PublicKeyToken=89b483f429c47342" /> 
        </DbProviderFactories> 
    </system.data> 
    
  • +0

    嚴重的是,你很高尚......非常感謝。我在我的應用程序中添加了上述配置,它正在工作。 :) –

    相關問題