Web.Config中的Oracle.ManagedDataAccess TNS_ADMIN

时间:2018-10-23 18:19:43

标签: c# oracle oracle-manageddataaccess

我正在尝试配置使用Oracle.ManagedDataAccess库的解决方案,以在连接字符串中使用TNS名称而不是显式数据源。在进行任何更改之前,程序可以正常运行,但是我配置TNS设置的所有尝试均失败了。

我的计算机上本地有TNS文件,可以在C:\ oracle \ tns \ tnsnames.ora上进行开发。

我已经更新了web.config中的连接字符串,以使用TNS文件中存在的别名:

<connectionStrings>
  <add name="OracleConnectionString"
      connectionString="Data Source=DEV1;Persist Security Info=True;User ID=myUser;Password=myPassword;"
      providerName="System.Data.OracleClient"/>
</connectionStrings>

还添加了configSection以及库的配置:

<configuration>
  <configSections>
    <section name="oracle.manageddataaccess.client" type="OracleInternal.Common.ODPMSectionHandler, Oracle.ManagedDataAccess, Version=4.121.2.0, Culture=neutral, PublicKeyToken=89b483f429c47342"/>
  </configSections>
  ....
  <oracle.manageddataaccess.client>
    <version number="*">
      <settings>
        <setting name="TNS_ADMIN" value="C:\oracle\TNS\tnsnames.ora" />
      </settings>
    </version>
  </oracle.manageddataaccess.client>
</configuration>

尽管尝试运行程序但收到错误ORA-12154: TNS:could not resolve the connect identifier specified。我不确定我配置不正确,因为它没有提供太多信息。

要注意的一件事是,该解决方案由一个带有web.config的MVC项目和一个处理数据库访问的类库组成。对Oracle.ManagedDataAccess的引用在类库中。我曾尝试将Oracle配置部分(及其configSection)放在web.config,app.config和两者中,但这些设置均无效。

1 个答案:

答案 0 :(得分:2)

首先,对托管oracle的配置应位于条目项目的配置文件中。 就您而言,我猜应该在“ web.config”中

second,您的TNS_ADMIN应该是一个文件夹,而不是文件,就像下面的

  <oracle.manageddataaccess.client>
    <version number="*">
      <settings>
        <setting name="TNS_ADMIN" value="C:\oracle\TNS" /> //****change is here.
      </settings>
    </version>
  </oracle.manageddataaccess.client>
</configuration>