【发布时间】:2014-04-19 03:41:58
【问题描述】:
我正在尝试将我的 .NET 项目切换到管理 oracle 以简化部署。但是,我在测试 Win Server 2013 环境中遇到以下错误:
无法确定“Oracle.ManagedDataAccess.Client.OracleConnection”类型连接的提供者名称。
到目前为止我已采取的步骤:
- 从解决方案中删除了所有 Oracle.DataAccess dll 和引用
- 在 NuGet 包管理器中添加了Oracle Data Provider for .NET (ODP.NET) Managed Driver
- 将所有
Imports Oracle.DataAccess语句切换到Imports Oracle.ManagedDataAccess
我没有收到任何构建错误,并且项目在本地运行良好。但是,当部署到测试环境时,我收到此错误。测试环境是 Windows Server 2012,并且安装了旧版 Oracle 11.2.0 客户端工具。
这是我的连接创建代码:
Public Sub New()
MyBase.New(
New OracleConnection(
ConfigurationManager.ConnectionStrings("Entities").ConnectionString),
True)
End Sub
这是我尝试过的 3 种不同风格的连接配置(都在本地工作,但在测试环境中产生相同的问题)
(为可见性而格式化)
<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 应该支持
标签: .net oracle odp.net iis-8 odp.net-managed