是否可以将oracle.managed.dataaccess与oracle client 11.2.03 32bit一起使用?

时间:2015-10-09 20:23:45

标签: .net oracle oracle11g odp.net

编辑(找到工作解决方案!):

  

由于某种原因,我的应用程序不会拿起tnsname文件,除非我   从.ora文件中删除了其他命名方法(命名方法,tnsnames,EZCONNECT,LDAP的顺序),因为您可以看到优先顺序是正确的。我不想从sqlnet.ora文件中删除那些命名方法   但是通过添加以下设置   我已经将Dan Keller和TNS_ADMIN设置一起提出了建议   有了,Oracle能够获取TNS名称文件。   所以澄清设置元素看起来像这样,

<settings>
        <setting name="NAMES.DIRECTORY_PATH" value="TNSNAMES"></setting>
        <setting name="TNS_ADMIN" value="d:\oracle\product\11.2.0\client_1\network\admin\"/>                
</settings>

我有一个网络应用

我从Nuget https://www.nuget.org/packages/Oracle.ManagedDataAccess/12.1.22

下载了以下Oracle托管数据访问

开发服务器上的当前oracle客户端是11.2.0.3 32位

我已将web.config设置为包含以下内容

    

  <settings>

    <setting name="TNS_ADMIN" value="d:\oracle\product\11.2.0\client_\network\admin"/>


  </settings>

</version>

但是我收到以下错误:

'OracleInternal.Network.AddressResolution'的类型初始化程序引发了异常。

有什么建议吗?感谢。

[编辑] 这是异常中的一些更多信息

'OracleInternal.Network.AddressResolution'的类型初始值设定项引发了异常。    at OracleInternal.Network.AddressResolution.Resolve(String TNSAlias,ConnectionOption&amp; CO,String instanceName)    在OracleInternal.ConnectionPool.PoolManager 3.ResolveTnsAlias(ConnectionString cs) at OracleInternal.ConnectionPool.PoolManager 3.Initialize(ConnectionString cs)    在OracleInternal.ConnectionPool.OraclePoolManager.Initialize(ConnectionString cs)    在OracleInternal.ConnectionPool.OracleConnectionDispenser 3.GetPM(ConnectionString cs, PM conPM, ConnectionString pmCS, SecureString securedPassword, SecureString securedProxyPassword, Boolean& bAuthenticated, Boolean& newPM) at OracleInternal.ConnectionPool.OracleConnectionDispenser 3.Get(ConnectionString cs,PM conPM,ConnectionString pmCS,SecureString securedPassword,SecureString securedProxyPassword)    在Oracle.ManagedDataAccess.Client.OracleConnection.Open()

2 个答案:

答案 0 :(得分:0)

Oracle Managed不使用TNS名称文件,而是使用app / web.config文件中的自定义“配置”部分。您可以使用Oracle 12托管驱动程序连接到Oracle 11数据库。托管驱动器将忽略先前安装的11g 32位。

有一点需要注意,托管驱动器不适用于Oracle用户定义类型。

class main(object):

答案 1 :(得分:0)

在您的SQLNET.ORA文件中,可能是它从oracle 11安装中找到了TNSNames文件,但是oracle 11配置为在检查TNSNames之前检查LDAP或EZConnect。

您可以覆盖此设置,而无需手动输入TNSNames中的内容,这是使用TNSNames文件的好处,例如,如果您的组织更改服务器并且数据库组管理TNSNames文件。

<oracle.manageddataaccess.client>
    <version number="*">
        <settings>
            <setting name="NAMES.DIRECTORY_PATH" value="TNSNAMES"></setting>
        </settings>
    </version>
</oracle.manageddataaccess.client>