我正在尝试使用
访问 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 .
关于c# - SQLNET.AUTHENTICATION_SERVICES= (NTS) 和 ASP.NET,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2111097/