C# C“ORA-12154:TNS:无法解析指定的连接标识符”}

C# C“ORA-12154:TNS:无法解析指定的连接标识符”},c#,oracle,C#,Oracle,首先,我搜索了其他帖子,但没有找到与我的问题相匹配的帖子 I使用Oracle.ManagedDataAccess版本4.122.1.0 我的app.config文件connectionstring是 <add name="connstring1" connectionString="Data Source=NAMEOFTNS;User ID=**UserNAME**;Password=***pass***;" providerName="Oracle.ManagedDataAccess.C

首先,我搜索了其他帖子,但没有找到与我的问题相匹配的帖子

I使用Oracle.ManagedDataAccess版本4.122.1.0

我的app.config文件connectionstring是

<add name="connstring1" connectionString="Data Source=NAMEOFTNS;User ID=**UserNAME**;Password=***pass***;" providerName="Oracle.ManagedDataAccess.Client"/>


OracleConn = OracleProviderFactory.CreateConnection();
            OracleConn.ConnectionString = ConfigurationManager.ConnectionStrings["connstring1"].ConnectionString;
 OracleConn.Open();
我用TNSPING测试了TNSNAME,结果很好

我可以从TNS文件中输入连接信息,并用连接信息替换连接字符串中的TNSNAME,它工作正常。但问题是,我们需要TNS文件来实现这一点,这样当我们使用不同的服务器执行更新时,我们只需更新单个文件,而不是更改每个应用程序的所有应用程序配置文件


大多数建议是完全绕过TNS文件,将连接信息直接放入app.config文件,但如上所述,这不是我想要的

找到了我的答案,尽管没有专门使用Oracle.ManagedDataAccess

而是使用Oracle.DataAccess 在下面的链接中找到答案 在OracleCommand实例化之后,必须将OracleCommand.BindByName=true

我的具体代码是

OracleCommand oracleCommand = new OracleCommand
        {
            BindByName = true
        };
我必须说,Oracle要求您指定使用TNS文件,而不是将其作为默认文件,这让我感到惊讶


这个答案毫无意义。您说过错误发生在connection.Open。因此,设置BindByName将在此之后进行。
OracleCommand oracleCommand = new OracleCommand
        {
            BindByName = true
        };