2013-03-07 35 views
5

ODP.NETを見つけることができません管理:Oracleは私がODP.net Webアプリケーションをローカルで動作しますが、それをサーバーに展開するとき、それはエラーで失敗した管理のtnsnames.ora

「TNS:リスナーは現在の知りません接続記述子で要求されたサービス」

これはtnsnames.oraファイルには届かないためです。

ノー成功を収めて次のことを試してみました:

  • は、[Oracleホーム] [製品]にtnsnames.oraファイル(ローカルで動作する同じものを)置く... \ネットワーク\管理者フォルダを。
  • 環境変数を指すManaged ODPのweb.configセクションでTNS_ADMIN設定を設定します。
  • Managed ODPのweb.configセクションのTNS_ADMIN設定を、tnsnames.oraファイルを直接指すように設定します。

tnspingを実行しようとすると、エラーTNS-03502が発生します。メッセージ3502が見つかりません。製品のメッセージファイル=ネットワーク、施設= TNS

何が欠けていますか?

+0

接続文字列とtsnames.oraの検閲済みのバージョンを表示できますか? –

+0

あなたのoracleクライアントがサーバーを正しくインストールしていないと思われます。それは問題になることができますか? – evgenyl

答えて

8

など、tnsnames.oraファイルに依存しないことconnection stringを使用してみてください:

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

+0

これは質問された質問には答えません。 –

6

ちょうどweb.configファイルまたはapp.configをにTNS_ADMINパスを追加し、あなたが持っているフォルダを指すように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

0

古い投稿ですが、私は同様の解決策を探していました。

ODP.netではTNSファイルパスを指定できないように見えますが、ファイルパスを認識している場合は、ファイルをプログラムで読み込んで内容をDataSourceフィールドに設定するだけですConnectionStringBuilderの理想的ではありませんが、合理的な回避策です。

関連する問題