ASP.NET webapp - ORA-12154:TNS:无法解析指定的连接标识符

get*_*ode 6 asp.net oracle

我是一个新的(ASP.NET)开发人员,从现有项目开始,其中一部分连接到Oracle数据库.我以前没用过Oracle.

在Web应用程序尝试连接到Oracle时,它会抛出上述异常.

很多其他帖子提到了这个例外,但我觉得我已经遵循了所有建议都无济于事.

这是我的设置的过度视图:

  1. 我已将Oracle客户端版本11.2.0安装到主目录"C:\ app\TroughT\product\11.2.0\dbhome_1"
  2. 我已经从另一台开发人员机器(这些都可以工作)添加了一个tnsnames.ora文件到"C:\ app\TroughT\product\11.2.0\dbhome_1\NETWORK\ADMIN"
  3. 我已将sqlnet.ora中的APP_BASE变量更改为"C:\ app\TroughT\product\11.2.0\dbhome_1\log"
  4. 我(现在)给予Everyone完全控制整个dbhome_1目录和子目录
  5. 在Oracle Net Manager中,我使用ASP.NET连接字符串中使用的相同安全凭证测试了相关连接,并且测试正常
  6. 我添加了一个值为"C:\ app\TroughT\product\11.2.0\dbhome_1\NETWORK\ADMIN"的TNS_ADMIN系统变量

我们一定错过了什么,但我不知道是什么.请帮忙!

更新:

我发现用我的tnsnames.ora文件中的完整定义替换连接字符串中的SID实际上是有效的.以下示例.必须与ASP.NET无法找到我的tnsnames.ora文件有关,但我知道该文件是有效的,据我所知,我所有的系统变量都指向正确的位置.所以至少我现在正在工作,但我想了解为什么我的tnsnames.ora文件不起作用.

连接字符串失败:

"Data source=RMSUSNAP;User ID=uuuu;Password=pppp;"
Run Code Online (Sandbox Code Playgroud)

工作连接字符串:

"Data source=(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = replaced.host.name)(PORT = 1521))(CONNECT_DATA =(SID = rmsusnap)));User ID=uuuu;Password=pppp;"
Run Code Online (Sandbox Code Playgroud)

tnsnames.ora的相关部分:

RMSUSNAP.WORLD =
    (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = replaced.host.name)(PORT = 1521))
    (CONNECT_DATA =(SID = rmsusnap))
    )
Run Code Online (Sandbox Code Playgroud)

Fey*_*yaz 3

您应该在连接字符串中使用 RMSUSNAP.WORLD,而不仅仅是“RMSUSNAP”。