4

Visual Studio Development Serverで起動したときにOracleに接続できるASP.NETアプリケーションがありますが、ローカルIISに展開すると接続されず、「ORA-12154:TNS:解決できませんでした」と表示されます。接続識別子が指定されました」エラー。

私の接続文字列は次のとおりです。

Data Source=ABC; User Id=USER; Password=PASSWORD;

TtはTNSを使用しています。tnsnames.oraはC:\ oracle \ instanceclient_10_2 \ network \ adminにあり、ORACLE_HOMEシステム変数はC:\ oracle\instantclient_10_2を指しています。

それを機能させるために、接続文字列を次のように変更しました。

"SERVER=(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = server1.theplaceiwork.com)(PORT = 1521))(ADDRESS = (PROTOCOL = TCP)(HOST = server2.theplaceiwork.com)(PORT = 1521))(LOAD_BALANCE = yes))(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = ABC)(FAILOVER_MODE =(TYPE = SELECT)(METHOD = BASIC))));uid=USER;pwd=PASSWORD;"

そのため、TNSは使用されなくなりました。

しかし、Visual StudioでデバグしながらTNSを使用して接続できる理由を知りたいのですが、IISを使用している場合は接続できません。

任意のヒント?

PS。接続エラーを示さないTNSでSqlDeveloperを使用できます。

ありがとう

4

8 に答える 8

6

Network Service が TNS ディレクトリにアクセスできることを確認するか、アプリケーション プールを変更して自分で実行するようにします。

于 2011-08-24T17:33:47.133 に答える
1

違いは次のとおりです。

  • Visual Studioでデバッグしているときは、ログインしているユーザー(あなた)のセキュリティが守られています。
  • IISで実行している場合は、アプリケーションプールのIDのセキュリティコンテキストにいます。デフォルトはネットワークサービスです。
于 2011-08-24T17:27:34.173 に答える
1

私の場合、Windows 7、IIS 7、Visual Studio 2010 を使用しています。何らかの理由で、10.2 と 11.2 の2 つの Oracle クライアントをインストールしました (2 つの異なるパスに 2 つの TNSNAMES.ORA があります)。F5 を使用する場合、Visual Studio は 1 つの TNSNAME を使用し、IIS を使用する場合は別の TNSNAME を使用します。

CMD を使用して次のように記述した場合:

tnsping ORCL

私が使用しているOracleのバージョンは、11.2ではなく10.2です。Windows ファイアウォールをオフにしようとしましたが、機能しません。Windows アカウントで IIS->AppPool にログインしようとしましたが、どちらも機能しません。

最後に修正します(stackoverflowなどで多くのソリューションを読んだ2日後):

  • Network Serviceアカウントが見つからないため、パスC:\oracle\productC:\app\user\productの両方への読み取りアクセス権をEveryone アカウント ユーザーに付与します。

  • IIS -> AppPool で、ApplicationPoolIdentityを自分のプールに設定しました。

  • IIS では、AppPool をリサイクルして Web サイトを再起動します。

そしてそれは動作します!

于 2014-10-02T13:12:22.817 に答える
0

理解するのに完全に時間がかかりすぎたため、私のケースを投稿します。

フォルダーのアクセス許可を調整するアクセス権がなく、アプリケーション プール ID を設定しても何も起こりませんでした。

個々のサイトの匿名認証資格情報を自分のものに編集し、アプリケーションプールをネットワークサービスに編集する必要がありました。うまくいけば、これはいつか同じようにイライラする状況にある誰かを助けるでしょう.

于 2015-10-09T18:11:40.477 に答える
0

ApplicationPoolIdentity を使用している場合は、ApplicationPoolIdentity が TNS ディレクトリにアクセスできることを確認してください。

承認方法については、 IIS7 アクセス許可の概要 - ApplicationPoolIdentityを参照してください。

于 2016-03-22T12:50:22.507 に答える