The*_*ght 5 c# asp.net oracle data-access oracle-client
我们使用的是Oracle.DataAccess.dll程序集版本2.102.2.20(32位).
我将我们的Web API应用程序部署到IIS并尝试打开和关闭连接:
private static void CheckConnectionUsingOracleClient(string connection)
{
var logger = DiContainer.Resolve<ILogger>();
try
{
logger.LogInfo("Trying to connect to " + connection);
// check whether you can connect to the shop using Oracle.DataAccess
using (var cnn = new Oracle.DataAccess.Client.OracleConnection(connection))
{
cnn.Open();
cnn.Close();
}
logger.LogInfo("Succeeded to connect to " + connection);
}
catch (System.Exception ex)
{
logger.LogError("Failed to connect to " + connection, ex);
}
}
Run Code Online (Sandbox Code Playgroud)
在我的本地机器上它很好,但是在这个服务器上它会在尝试初始化OracleConnection时抛出异常:
对于"Oracle.DataAccess.Client.OracleConnection"的类型初始值引发异常.---> Oracle.DataAccess.Client.OracleException:提供程序不能与Oracle客户端的版本兼容
我已经在服务器上安装Oracle客户端11.2(32位)和I可以看到,在GAC(C:\ WINDOWS \组件)的Oracle.DataAccess组件安装在32位处理器体系结构.它在我们的一台服务器上工作正常但不是这一台.
在IIS中,我在应用程序池上设置了"启用32位应用程序".
怎么修好?到目前为止我花了10多个小时尝试不同的东西:(
理想情况下,我希望能够使用Oracle.DataAccess.dll而无需在服务器上安装Oracle客户端.
Oracle.DataProvider版本2.102.2.20解密
2:.Net 版本(对于 .Net 1 - 1.1 可以是 1,对于 2 - 3.5 可以是 2,对于 4 - 4.5 可以是 4)
102:Oracle 版本:Oracle 10.2
2.20:Oracle数据访问版本
你应该检查一下
.Net 版本(不应高于您的 .Net 编译器)
Oracle客户端版本(不应超过Oracle客户端版本)
Oracle 客户端和 Oracle.DataProvider 均为 64 位,或者 Oracle.DataProvider 为 32 位且 Oracle 客户端为 32 位或支持旧版 32 位模式
您可以使用Package Manager Console nuget安装Oracle.ManagedDataAccess
Pm> Install-Package Oracle.ManagedDataAccess
Run Code Online (Sandbox Code Playgroud)
ODP.NET托管驱动程序是100%本机.NET代码驱动程序。无需安装其他Oracle Client软件即可连接到Oracle数据库。
更新代码
using Oracle.ManagedDataAccess.Client;
private static void CheckConnectionUsingOracleClient(string connection)
{
var logger = DiContainer.Resolve<ILogger>();
try
{
logger.LogInfo("Trying to connect to " + connection);
// check whether you can connect to the shop using Oracle.DataAccess
using (var cnn = new OracleConnection(connection))
{
cnn.Open();
cnn.Close();
}
logger.LogInfo("Succeeded to connect to " + connection);
}
catch (System.Exception ex)
{
logger.LogError("Failed to connect to " + connection, ex);
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
35954 次 |
| 最近记录: |