我正在尝试使用访问Oracle数据库

using System.Data.OracleClient;


从控制台应用程序访问数据库即可。但是从ASP.NET网站我得到错误:

ORA-12640: Authentication adapter initialization failed


我四处搜寻,发现更改sqlnet.ora文件可以解决问题

//before
SQLNET.AUTHENTICATION_SERVICES= (NTS)
//after
SQLNET.AUTHENTICATION_SERVICES= (NONE)


后来我发现同一台服务器上的另一个应用程序也使用Oracle的其他数据库,它要求SQLNET.AUTHENTICATION_SERVICES的值为“ NTS”。这将导致我的网站无法访问,并显示错误ORA-12640。我尝试将“ ALL”作为值,但仍然没有用。

将sqlnet.ora配置为“ SQLNET.AUTHENTICATION_SERVICES =(NTS)”时,如何配置我的网站以访问oracle数据库?

附言该网站使用Windows身份验证并模拟如下:

<authentication mode="Windows"/>
<identity impersonate="true"/>

最佳答案

在我看来,这是multi-hop模仿问题。

如果您可以选择这样做,我建议您在访问数据库时让您的应用程序以单一身份运行(这也应允许连接池作为有益的副作用发生)。

为此,您需要将应用程序池配置为在具有访问Oracle权限的帐户下运行。一旦应用程序在该应用程序池下运行,请在您的应用程序中关闭模拟,以便使用应用程序池标识进行数据库调用。

如果您必须通过网络模拟呼叫用户,则使用的方法将取决于您的环境。有关更多信息,请参见How to Use Impersonation and Delegation in ASP.NET 2.0

10-07 22:21