我試圖將我的.NET項目切換到manage oracle以使部署更容易。不過,我在我的Win Server 2013環境測試中遇到以下錯誤:將.NET項目從非託管轉換爲託管的ODP.NET程序集的問題
無法確定類型爲'Oracle.ManagedDataAccess.Client.OracleConnection'的連接的提供程序名稱。
步驟我已經採取了迄今:
- 刪除了所有Oracle.DataAccess的DLL和從NuGet包管理器解決方案
- 添加了Oracle Data Provider for .NET (ODP.NET) Managed Driver
- 交換所有
Imports Oracle.DataAccess
語句到引用Imports Oracle.ManagedDataAccess
我沒有得到任何生成錯誤,並且項目運行良好loc盟友。但是,當部署到測試環境時,我得到這個錯誤。測試環境是Windows Server 2012,並且存在傳統的Oracle 11.2.0客戶端工具安裝。
這是我的連接創建代碼:
Public Sub New()
MyBase.New(
New OracleConnection(
ConfigurationManager.ConnectionStrings("Entities").ConnectionString),
True)
End Sub
這裏有3種不同風格的連接CONFIGS的,我已經試過(都工作在本地,但產量在測試環境相同的問題)
(格式化爲知名度)
<add
name="Entities"
connectionString="
Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=###.###.###.###)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=______)));
User Id=_____;
Password=_____;"
providerName="Oracle.ManagedDataAccess.Client" />
<add
name="Entities"
connectionString="
Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=###.###.###.###)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=______)));
User Id=_____;
Password=_____;"
providerName="Oracle.DataAccess.Client" />
<add
name="Entities"
connectionString="
Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=###.###.###.###)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=______)));
User Id=_____;
Password=_____;"
/>
任何幫助將不勝感激!
提供程序名稱是在實體框架的上下文中使用的一段時間。 –
您是否在服務器上安裝了OCI?你在服務器上運行ODP.Net安裝程序嗎?我發現我實際上不得不手動將一些DLL複製到bin文件夾中供Oracle使用,包括非託管的。 –
@MauriceReeves我的目標是不必在服務器上安裝OCI,我認爲託管dll應該支持 –