2015-08-28 76 views
0

尝试使用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服务器上运行
  1. 安装Oracle即时客户端IIS
  2. 在环境变量
  3. 创建TNS_ADMIN变量
  4. 设置路径到Oracle即时客户端
  5. 将ODBC驱动程序添加(安装)到即时客户端文件夹
  6. 创建和配置的tnsnames.ora

仍然得到了同样的错误:

+0

在托管IIS的服务器上您是否安装了正确版本的Oracle客户端,具有正确的TNS名称? –

+0

在Windows Server 2012 R2上安装并运行IIS。我需要在此服务器上安装Oracle客户端吗? – Asynchronous

+0

是的,oracle客户端也需要在此服务器上进行安装,您需要确保oracle客户端与您所测试的相同,并且TNSNames文件和测试机器上的任何其他文件位于服务器。 –

回答

1

运行IIS的服务器,将需要安装Oracle客户端和TNSNAMES文件和对方文件,您在您的测试有系统需要与您使用的网络服务器相匹配。

您应该尽可能使用与每个系统中相同的Oracle客户端版本。

+0

尽管我讨厌安装不必要的文件,但我只是删除了即时客户端,并安装了完整的ODAC组件:http://www.oracle.com/technetwork/topics/dotnet/utilsoft-086879。html'。我取消选中了Visual Studio的组件。 现在它工作。 – Asynchronous

+0

优秀:)很高兴我可以帮忙 –

+0

是的,你提到了一个非常重要的信息在你的文章中: '客户'应该'够了,但是根据我的经验,并不总是。' 这是我决定只安装完整的客户端。非常感谢。 – Asynchronous

相关问题