c# - Web.Config 中的 Oracle.ManagedDataAccess TNS_ADMIN

标签 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 和两者中,但这些设置均无效。

最佳答案

首先,托管 oracle 的配置应该在入口项目的配​​置文件中。 在你的情况下,我想它应该在“web.config”中

其次,您的 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>

关于c# - Web.Config 中的 Oracle.ManagedDataAccess TNS_ADMIN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52955474/

相关文章:

c# - 如何在 Kendo Grid MVC 中设置列​​宽以自动调整

sql - 如何在 Oracle 的过程中创建表?

oracle - 提高 Oracle 中数字列的精度或小数位数

oracle - 使用 JDBC Source 和 Redis Stream 进行 Spark Streaming

c# - "the provider did not return a providermanifesttoken"使用 Oracle MangedDataAccess 和 EF 6 Code First

c# - 带有 ODP.Net Oracle.ManagedDataAccess 的 EF 6,如何对类属性使用非大写字母?

c# - .NET 4.6 Oracle.ManagedDataAccess 要求

c# - 来自 ViewModel 和 DispatchTimer 的 RelayCommand

c# - 静默刷新在 OPTIONS 预检上进行身份验证,但不在 GET 到 UserInfo 端点上进行身份验证

c# - 用于在瓦片 map 上查找最近对象的算法