从IIS连接到Oracle DB。错误:打开底层提供程序失败
尝试使用IIS 8.5中承载的WCF服务时出现以下错误。 The underlying provider failed on Open.
我正在使用Oracle DB 11G
。从IIS连接到Oracle DB。错误:打开底层提供程序失败
从我的开发环境,我可以连接到Oracle DB
没有问题。如果我只是在Visual Studio中运行WCF服务并运行客户端应用程序。我也可以从Visual Studio
内连接到Oracle实例并使用该服务。
我不确定在哪里看。最后,我关闭了开发服务器上的防火墙,以查看是否有任何问题。我也能够成功地Ping Oracle Server。
下面是从IIS连接字符串:
metadata=res://*/OracleDB.csdl|res://*/OracleDB.ssdl|res://*/OracleDB.msl;provider=Oracle.ManagedDataAccess.Client;
provider connection string="DATA SOURCE=INSTANCE_TNSNAMES;PASSWORD=MyPassword;
PERSIST SECURITY INFO=True;USER ID=MyUserID"
这是连接字符串通过的NuGet添加到应用程序时,Oracle管理驱动程序安装在Visual Studio中,它是在应用程序相同的字符串。
更新:这里是我试过的事情的清单:
事情我已经尝试:
-
在Windows服务器上运行
- 安装Oracle即时客户端IIS
- 在环境变量 创建TNS_ADMIN变量
- 设置路径到Oracle即时客户端
- 将ODBC驱动程序添加(安装)到即时客户端文件夹
- 创建和配置的tnsnames.ora
仍然得到了同样的错误:
运行IIS的服务器,将需要安装Oracle客户端和TNSNAMES文件和对方文件,您在您的测试有系统需要与您使用的网络服务器相匹配。
您应该尽可能使用与每个系统中相同的Oracle客户端版本。
尽管我讨厌安装不必要的文件,但我只是删除了即时客户端,并安装了完整的ODAC组件:http://www.oracle.com/technetwork/topics/dotnet/utilsoft-086879。html'。我取消选中了Visual Studio的组件。 现在它工作。 – Asynchronous
优秀:)很高兴我可以帮忙 –
是的,你提到了一个非常重要的信息在你的文章中: '客户'应该'够了,但是根据我的经验,并不总是。' 这是我决定只安装完整的客户端。非常感谢。 – Asynchronous
在托管IIS的服务器上您是否安装了正确版本的Oracle客户端,具有正确的TNS名称? –
在Windows Server 2012 R2上安装并运行IIS。我需要在此服务器上安装Oracle客户端吗? – Asynchronous
是的,oracle客户端也需要在此服务器上进行安装,您需要确保oracle客户端与您所测试的相同,并且TNSNames文件和测试机器上的任何其他文件位于服务器。 –