在连接字符串中包含服务名称的语法是什么?

What Is the Syntax for Including the Service Name in a Connection String?

我有一个 C# ASP.Net MVC 网络应用程序。我正在尝试成功连接到 Oracle 数据库。 我收到“ORA-12514:TNS:listener 当前不知道连接描述符中请求的服务”错误。 我无权访问数据库所在的服务器。但是我确实可以访问 Oracle SQL Developer,我已经在我的机器上安装了它。

在我的 C# 代码中,我设置的连接字符串如下:

ConnectionString = "DataSource=XXX.XX.XXX.XXX/abcd,1521;User ID=userid;Password=password;";

abcd 应该是服务名称。 1521 是端口号。

我知道我的连接字符串可能不是错误的原因,但我想排除它。另外,我知道更正确的做事方式可能是在 web.config 中设置连接字符串并根据需要检索它,但我这样做只是为了便于测试,直到我知道我能够连接到数据库成功。

令我感到奇怪的是,我能够使用 Oracle SQL 开发人员使用我在我的应用程序中使用的相同 IP 地址、端口号、服务名称、用户名和密码连接到数据库连接字符串。

首先,我想知道我的连接字符串是否有效。如果您对问题可能有其他想法,我们也将不胜感激。

在 Oracle 中使用此命令 SQL 开发人员: select sys_context('userenv','service_name') from dual;

我能够确定我在连接字符串中使用的服务名称是存在的,但我猜这并不能保证该服务已启动。 我无论如何都不是DBA。事实上,我对 .Net 和 web 开发总体上还是个新手,但我被指派去解决这个问题。感谢任何帮助。

我不记得看到过以下格式

DataSource=XXX.XX.XXX.XXX/abcd,1521

有效(这并不意味着无效,我只是没看到)。

我见过比较常见的有:

DataSource=XXX

其中 XXX 是对您的 tnsnames.ora 文件的引用

DataSource=//nnn.nnn.nnn.nnn/service_name
DataSource=//nnn.nnn.nnn.nnn:port/service_name

所以也许可以试试这些变体,看看效果如何。在 https://www.c-sharpcorner.com/UploadFile/nipuntomar/connection-strings-for-oracle/

上还有更明确​​的备选方案列表

我终于弄明白了。我认为我的连接字符串格式不正确。我将其更改为:

ConnectionString = "DataSource=XXX.XX.XXX.XXX/abcd;User ID=userid;Password=password;";

基本上就是把端口号去掉了。就我而言,默认端口是我所需要的。如果我需要指定端口号,我不确定我会怎么做。