0

Windows Identity Tokenを使用してOracleデータベースに接続しようとしていますが、昨日は機能しましたが、今日は機能せず、理由がわかりません。

これは私のコードです:

string ssoConnectionString;
var user = CreateSSOConnectionString(connectionStringBuilder, out ssoConnectionString);
oracleConnectionStringBuilder = new OracleConnectionStringBuilder
                                    {
                                        UserID = user.Identity.Name,
                                        ConnectionString = ssoConnectionString
                                    };

private WindowsPrincipal CreateSSOConnectionString(IConnectionStringBuilder connectionStringBuilder, out string ssoConnectionString)
{
    var user = new WindowsPrincipal(WindowsIdentity.GetCurrent());
    ssoConnectionString = ConfigurationManager.AppSettings["SSOConnectionString"];
    ssoConnectionString = string.Format(ssoConnectionString, connectionStringBuilder.Host);
    return user;
}

Connection = new Oracle.DataAccess.Client.OracleConnection();
Connection.ConnectionString = oracleConnectionString.ConnectionString;

Connection.Open(); //Fails on this line

コードは正確にはこのようには見えませんが、それは不可欠です。

SSO ConnectionStringはapp.configにあり、次のようになります。

<add key="SSOConnectionString" value="DATA SOURCE={0};User Id=/;" />

Oracle自身がそれを行う方法を説明する方法を示すリンクは次のとおりです。http://docs.oracle.com/cd/E11882_01/win.112/e18754/featConnecting.htm#i1006432

これは私が受け取るエラーメッセージです:

ORA-1017: invalid username/password; logon denied

ブレークポイントで確認しましたが、すべて問題ないようです。また、このエラーについて多くのことを検索しました。ほとんどの人は、Oracleバージョン11gでパスワードが大文字と小文字を区別するようになったためだと言いますが、パスワードは提供していません。

4

1 に答える 1

1

Oracle.DataAccess.dllこのエラーの原因は、実際にはバージョンと私のマシンにインストールされているOracleクライアントとの不一致でした。

したがって、エラーは実際には構成ファイルのコードや接続文字列とはまったく関係ありません。

コマンドウィンドウに「sqlplus」と入力してOracleClientのバージョンを確認し、Oracle.DataAccess.dllバージョンとターゲットの.NETFrameworkのバージョンが一致していることを確認します。

于 2012-08-08T10:29:07.830 に答える