2013-03-07 108 views
5

我的管理ODP.net webapp的本地工作,但它部署到服務器時,它失敗,出現錯誤:Oracle管理ODP.NET找不到tnsnames.ora中

「TNS:監聽器目前不知道的服務請求連接描述符「

從環顧四周,它似乎是因爲它無法進入tnsnames.ora文件。

我曾嘗試沒有成功如下:

  • 配售tnsnames.ora文件(同一個本地工作)到甲骨文的家] [產品] ... \網絡\ admin文件夾。
  • 在託管ODP的web.config部分中指向環境變量的TNS_ADMIN設置。
  • 在Managed ODP的web.config部分中設置TNS_ADMIN設置,直接指向tnsnames.ora文件。

在服務器上,試圖運行tnsping產生錯誤TNS-03502:未找到消息3502;沒有消息文件的產品= NETWORK,設施= TNS

我錯過了什麼?

+0

你能告訴我們你的連接字符串和tsnames.ora的審查版嗎? – 2013-03-07 21:59:29

+0

似乎你的oracle客戶端omn服務器沒有正確安裝。這可能是問題嗎? – evgenyl 2013-03-28 21:51:09

回答

8

嘗試使用connection string不依賴於tnsnames.ora中,如:

Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=MyHost)(PORT=MyPort)))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=MyOracleSID)));User Id=myUsername;Password=myPassword; 
+0

我們有一些安裝了多個oracle客戶端的服務器,當在同一個盒子上安裝了10g和11g時,這個答案爲我們節省了大量的時間。 – marty 2013-12-24 15:16:18

+0

雖然這並不回答問題。 – 2017-12-06 15:57:42

6

只需添加TNS_ADMIN路徑的web.config或app.config中,它指向哪裏你的文件夾一個tnsnames.ora文件應該可以工作。

<oracle.manageddataaccess.client> 
    <version number="*"> 
     <settings> 
     <setting name="tns_admin" value="E:\oracle11\product\11.2.0\client_1\network\admin" /> 
     </settings> 
    </version> 
</oracle.manageddataaccess.client> 
+0

有時我必須在tns_admin設置中使用正斜槓。稱它爲迷信,但似乎有助於解決我的問題。 – matrixugly 2017-09-13 18:34:24

0

舊的帖子,但我一直在尋找類似的解決方案。

我發現它看起來像ODP.net不允許指定TNS文件路徑,那麼如果您知道文件路徑,只需以編程方式讀取文件並將內容設置爲DataSource字段的ConnectionStringBuilder。不理想,但是一個合理的解決方法。