0

我正在尝试使用 Windows 身份令牌连接到 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”来检查您的 Oracle 客户端版本,检查Oracle.DataAccess.dll版本和目标 .NET 框架版本是否匹配。

于 2012-08-08T10:29:07.830 回答