2015-08-28 91 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

相關問題