2

我有一个小的 asp.net core 2.2 应用程序应该访问一个 oracle 数据库;我正在使用 NuGet Oracle.ManagedDataAccess.Core (2.18.6),它只适用于我的机器。

当我使用 IIS 将它部署到 windows 服务器时,我将一个tnsnames.ora文件放在应用程序的目录中,然后它就可以正常工作了。

现在我想使用共享tnsnames.ora文件。我已经尝试过web.config以下操作(来自 StackOverflow/Google 对类似问题的回答)。

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <configSections>
    <section name="oracle.manageddataaccess.client" type="OracleInternal.Common.ODPMSectionHandler, Oracle.ManagedDataAccess, Culture=neutral, PublicKeyToken=89b483f429c47342"/>
  </configSections>

  <!-- skipping app stuff -->

  <oracle.manageddataaccess.client>
    <version number="*">
      <settings>
        <setting name="tns_admin" value="F:\path\to\tnsadmin\folder" />
      </settings>
    </version>
  </oracle.manageddataaccess.client>
</configuration>

不幸的是,这不起作用(并且由于核心版本Oracle.ManagedDataAccess.dll没有ODPMSectionHandler类,这并不令人意外)。

那么,有没有办法tnsnames.ora与 odp.net 核心共享文件?

(PS imo我们需要odp.net-core标签)

更新

  1. 需要确保w3wp.exe可以实际访问文件。

  2. 设置系统环境变量TNS_ADMIN是一种可能的解决方案。在这种特殊情况下就足够了,但我仍然很好奇如何通过web.config.

4

2 回答 2

0

使用 Oracle.ManagedDataAccess,您不需要使用 tnsnames.ora 文件。事实上,您不需要在 Web 服务器上安装 Oracle 客户端。使用启动.cs。

public void ConfigureServices(IServiceCollection services)
{                        
        services.AddEntityFrameworkOracle()
            .AddDbContext<OracleDbContext>(builder => builder.UseOracle(Configuration["Data:OracleDbContext"]),ServiceLifetime.Scoped)
            .AddDbContext<AppsDbContext>(option => option.UseOracle(Configuration["Data:AppsDbConnection:ConnectionString"]), ServiceLifetime.Scoped);
}

apsettings.json

{
 "Logging": {
"LogLevel": {
  "Default": "Warning"
}
},
"AllowedHosts": "*",
"Data": {
"OracleDbContext": "Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=zzz)(PORT=1521))(CONNECT_DATA=(zzzz)));User Id=zzz;Password=zzz;" },
"AppsDbContext": "Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=yyyy)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=yyyy)));User Id=yyyy;Password=yyyy;" }
}
}
于 2019-08-09T02:03:35.790 回答
0

ODP.NET Core 不像标准 ODP.NET 那样支持配置文件。您将需要使用配置 API:

https://docs.oracle.com/en/database/oracle/oracle-data-access-components/18.3/odpnt/InstallCoreConfiguration.html

于 2019-05-25T13:21:32.593 回答