c# - SQLNET.AUTHENTICATION_SERVICES= (NTS) 和 ASP.NET

标签 c# asp.net oracle authentication

我正在尝试使用

访问 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/

相关文章:

c# - 在Docker.DotNet中,如何通过指定Dockerfile的目录来构建镜像?

php - 我想在我的网站上添加交互式日历

javascript - 在 KeyPress 上隐藏 Javascript 中的 ASP.Net 标签

c# - 如何在新实现的接口(interface)或基类之间做出决定?

sql - 在Select *(all)语句中显示RowID

c# - 为什么在 "try"或 "catch"或 "finally"的范围内声明的变量没有?

c# - 希望触发器的参数中有 Azure.Messaging.ServiceBus ServiceBusReceiver

c# - 从网络摄像头输入以编程方式更新 WPF 图像控件

sql-server - 向表中添加 BLOB 字段的性能开销

oracle - 在 PL/SQL 中验证 IBAN