我收到ORA-12154“TNS:无法解析指定的连接标识符”。 Oracle.ManagedDataAccess.Client

时间:2017-05-25 20:54:02

标签: asp.net .net oracle oracle-manageddataaccess

我收到ORA-12154“TNS:无法解析指定的连接标识符”。我正在用Oracle.ManagedDataAccess.Client替换Oracle.DataAccess.Client。我正在使用Windows10 64位。它适用于DataAccess.Client和另一台机器。操作系统有问题吗?非常感谢您的帮助。

3 个答案:

答案 0 :(得分:1)

我认为ODP.NET托管驱动程序找不到您的tnsnames.ora(分别为sqlnet.oraldap.ora等)文件。 Oracle.ManagedDataAccess的搜索模式与Oracle.DataAccess

使用的搜索模式不同

根据documentation,ODP.NET托管驱动程序配置按此顺序解析别名:

  1. .NET配置文件中dataSources部分<oracle.manageddataaccess.client>部分中的数据源别名(即machine.configweb.configuser.config)。
  2. .NET配置文件中tnsnames.ora指定位置的TNS_ADMIN文件中的数据源别名。位置可以包含绝对或相对目录路径。
  3. tnsnames.ora位于同一目录中的.exe文件中的数据源别名。
  4. 如您所见,与Oracle.DataAccess不同,它会从注册表或TNS_ADMIN环境变量中读取{strong> 读取TNS_ADMIN值。

    但是,关于TNS_ADMIN环境变量,我不确定这是否是文档中的错误 - 也许我会按时间进行测试。

答案 1 :(得分:0)

问题已经解决。在machine.config文件的section下有tns_admin条目,它指向Oracle_Home上的tnsnames.ora文件。我评论该部分及其工作正常。谢谢大家的帮助。

答案 2 :(得分:0)

以我的情况来说很简单。
在应用程序启动方法中设置ORACLE_HOME环境变量
在web.config中没有任何更改或设置

var oracleHome = GetOracleHome(); // Find registry...
Environment.SetEnvironmentVariable("ORACLE_HOME", oracleHome);