8

管理対象の ODP.net webapp はローカルで動作しますが、サーバーにデプロイすると次のエラーで失敗します:

「TNS: リスナーは現在、接続記述子で要求されたサービスを認識していません」

調べてみると、これは tnsnames.ora ファイルにアクセスできないことが原因のようです。

次のことを試しましたが、成功しませんでした:

  • tnsnames.ora ファイル (ローカルで動作するファイルと同じ) を [oracle ホーム][製品]...\network\admin フォルダーに配置します。
  • Managed ODP の web.config セクションで、環境変数を指す TNS_ADMIN 設定を設定します。
  • Managed ODP の web.config セクションで、tnsnames.ora ファイルを直接指すように TNS_ADMIN 設定を設定します。

サーバーで tnsping を実行しようとすると、エラー TNS-03502: Message 3502 not found; が発生します。product=NETWORK、facility=TNS のメッセージ ファイルがありません

私は何が欠けていますか?

4

4 に答える 4

14

次のように、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;
于 2013-04-08T19:46:10.763 に答える
8

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>
于 2015-07-09T15:34:35.360 に答える
0

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

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

于 2015-10-12T08:41:58.240 に答える