2

Vista 64 ビットで Visual Studio 2008 を使用して、次のようなテスト Web サイトまたは Web アプリケーションを作成すると...

public partial class _Default : System.Web.UI.Page 
{
    protected void Page_Load(object sender, EventArgs e)
    {
        OracleConnection connection;
        connection = new OracleConnection("User Id=user;Password=userpass;Data Source=dataSource;");
        connection.Open();
    }
}

...そして実行すると、次のエラーが発生します。

ORA-12154: TNS:could not resolve the connect identifier specified

括弧に関するこの問題を認識しています... http://duanesbrain.blogspot.com/2007/01/ora-12154-using-c-with-microsoft-visual.html

Visual Studio 2008 は Program Files (x86) にインストールされていますが、別の開発者が同じセットアップを使用しており、彼にとっては正常に動作します。プロジェクト自体は、括弧を持つ名前のディレクトリ内にはありません。

tnsnames.ora または sqlnet.ora ファイルではないことはわかっています。私は、このプロジェクトに私よりもずっと長く取り組んできたすべての開発者とまったく同じようにマシンをセットアップしました。

また、使用している接続文字列が正しいことも 100% 確信しています。

まったく同じコードでコンソール アプリケーションを作成すると、正常に接続されます。Oracle サーバーに ping を実行し、その接続文字列情報を使用してコマンド プロンプトから直接接続することもできます。

もう 1 つの奇妙な点は、VS 2005 (これも Program Files (x86) にインストールされています) を使用して同じコードで Web アプリケーションまたは Web サイトを作成すると、正常に動作することです。

VS 2008 のみを使用する Web アプリケーションとサイトに制限されているようです。

編集:私の oracle フォルダーには、現在すべてのユーザーに与えられているすべてのアクセス許可があることを追加する必要があります。

編集: Oracle のバージョンは 10.2.0 です

編集:洞察に感謝します。私はそれを機能させることができず、他の開発者は、XP vm を構築して作業する方が速いと判断しました。数時間で 1 つのセットアップが完了し、すべてが正常に動作しました。

4

6 に答える 6

1

これはデバッグ モードとリリース モードの両方で発生しますか? WebDev.WebServer.exe (casini) exe Web サーバーまたは IIS を使用して Web サイトを運営していますか。他のものに切り替えてみてください。これは、デバッグ時または実行時にのみ発生しますか?

おそらく、この Web サイトは別のユーザー/プロセスとして実行されており、このアカウントには oralce 用に構成されたパスがありませんか?

于 2009-08-03T15:36:18.720 に答える
0

表示されているエラーメッセージは、tnsnames.oraファイル、sqlnet.oraファイル、またはデータソース値のいずれかに問題があることを示しています。これらのファイルの他の開発者のバージョンを確認する必要があります。

EZCONNECTメソッドを使用して接続を確認しようとしましたか?(www.connectionstrings.com/oracleを参照)EZCONNECTを有効にするには、sqlnet.oraファイルを変更する必要がある場合があります。

Data Source=username/password@myserver//instancename
于 2009-07-31T18:51:28.600 に答える
0

.NETを介してOracleに接続しようとすると、さまざまな結果と奇妙な問題が発生しました。通常、これは奇妙な環境設定の問題です。

この接続文字列を試してください(tnsファイルは使用しませんが、その中の同じ詳細を使用します)

データソース=(DESCRIPTION =(ADDRESS_LIST =(ADDRESS =(PROTOCOL = TCP)(HOST = HOST IP)(PORT = 1521)))(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = SERVICENAME)));ユーザーID = USERID ; Password = PASSWORD;

これにより、Oracleへの接続に問題があるかどうか、またはTNSファイルが適切に解決されていないかどうかを確認できます。

SOFTWARE \ ORACLE \には、HOME、ALL_HOMES、HOME0などの何かが必要です。これは、ドライバーがOracleホームを識別してTNSファイルを登録する方法だからです。

また、VSを実行している開発ボックスのファイアウォールを調べ、dll参照をチェックして、同じOracleDLLを使用していることを確認します。MSoracledllまたはOracleのdllを使用していますか?

于 2009-08-03T15:57:22.167 に答える
0

以前、Oracle ホームに問題がありました。ORACLE_HOME が正しく設定されていることを確認するために、レジストリを確認し、必要に応じて変更できますか。レジストリ パスは HKLM\SOFTWARE\ORACLE\ です。

KEY_OraOdac11h_home1 という名前のキーがあり、ORACLE_HOME の値は、Oracle クライアントをインストールした場所へのファイル パス (C:\Oracle\product\11.1.0\client_1) です。

システム環境変数 ORACLE_HOME を値 C:\Oracle\product\11.1.0\client_1 で追加することもできます。

Oracle クライアントをインストールした場所にファイル パスを変更します。

于 2009-07-29T23:45:51.197 に答える
0

64ビット/32ビットの問題ですか?プロジェクトを 32 ビットでビルドするように設定してから、IIS を強制的に 32 ビット モードにすることができます。

IIS の変更方法: http://support.microsoft.com/kb/894435

于 2009-07-31T21:39:09.527 に答える