我们使用的是 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);
}
}
在我的本地机器上它很好,但是在这个服务器上它在尝试初始化 OracleConnection 时抛出一个异常:
'Oracle.DataAccess.Client.OracleConnection' 的类型初始化程序引发了异常。---> Oracle.DataAccess.Client.OracleException: 提供程序与 Oracle 客户端版本不兼容
我已经在服务器上安装了 Oracle 客户端 11.2(32 位),我可以看到在 GAC(c:\windows\assembly)中,Oracle.DataAccess 程序集安装在 32 位处理器架构中。它在我们的一台服务器上运行良好,但在这台服务器上运行良好。
在 IIS 中,我也在应用程序池上设置了“启用 32 位应用程序”。
如何修复?到目前为止,我已经花了 10 多个小时尝试不同的事情:(
理想情况下,我希望能够使用 Oracle.DataAccess.dll 而无需在服务器上安装 Oracle 客户端。