我有一个小的 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
标签)
更新
需要确保
w3wp.exe
可以实际访问文件。设置系统环境变量
TNS_ADMIN
是一种可能的解决方案。在这种特殊情况下就足够了,但我仍然很好奇如何通过web.config
.