我正在尝试使用访问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。