在web.config中使用TNS_ADMIN的相对路径

时间:2015-11-16 12:07:56

标签: asp.net .net oracle odp.net

我尝试将我的Web应用程序配置为使用tnsnames.ora应用程序文件夹中的bin文件,但只有在指定bin文件夹的完整路径时才能使用它

有没有办法使用相对路径?

我尝试过以下变种而没有运气:

<setting name="TNS_ADMIN" value="bin"/>
<setting name="TNS_ADMIN" value="/bin"/>
<setting name="TNS_ADMIN" value="~/bin"/>
<setting name="TNS_ADMIN" value="\bin"/>
<setting name="TNS_ADMIN" value="~\bin"/>
<setting name="TNS_ADMIN" value="bin/"/>
<setting name="TNS_ADMIN" value="bin\"/>

1 个答案:

答案 0 :(得分:2)

TNS_ADMIN也是受支持的环境变量,这意味着您可以通过global.asax的Application_Start中的代码执行此操作:

Environment.SetEnvironmentVariable("TNS_ADMIN", Server.MapPath("~/bin"));

那就是说,我想知道你是否需要这样做。如果您的tnsnames文件是全局的,那么您可以将TNS_ADMIN设置为系统环境变量,然后一切都将使用它。但是,如果这些tns别名特定于您的应用程序,您可以简单地将它们包含在配置本身中:

  <oracle.manageddataaccess.client>
    <version number="*">
      <dataSources>
        <dataSource alias="Server1" descriptor="(DESCRIPTION =
          (ADDRESS = (PROTOCOL = TCP)(HOST = server1-scan.company.com)(PORT = 1526))
          (CONNECT_DATA =
            (SERVER = DEDICATED)
            (SERVICE_NAME = server1.company.com)
          )
        )
      " />
      </dataSources>
    </version>
  </oracle.manageddataaccess.client>

我并不是说你正在做的事情有什么问题,但一般来说,tnsnames用于集中某些tns配置,你想拥有一个似乎是特定于您的应用。