我是第二个使用100%托管提供商的概念.它不需要知道我即将讨论的细节.这里唯一的问题是我认为您可能需要升级到.net 4.0.
TLDR版本:
完整版本:
首先,让我们确保了解旧的未经授权的提供程序(而不是新的12c 100%托管提供程序)的组件.它由两部分组成:
简单来说,Oracle.DataAccess.dll几乎只是一个包装器,将.net指令转换为非托管客户端的ORACLE-NET指令.
也就是说,当您加载Oracle.DataAccess时,它会尝试查找所需的非托管客户端dll.从Oracle文档:
Oracle.DataAccess.dll根据以下顺序搜索依赖的非托管DLL(例如Oracle Client):
1.应用程序或可执行文件的目录.
2.应用程序配置或web.config指定的DLL路径设置.
3.由machine.config指定的DllPath设置.
4. Windows注册表指定的DLL路径设置.
HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\ODP.NET \版本\ DllPath的
5. Windows PATH环境变量指定的目录.
如果您在计算机上安装了多个客户端,则会发挥作用,因此这可能是您的问题的一部分.如果是这样,最简单的方法是在配置中使用dllPath配置变量:
<configuration>
<oracle.dataaccess.client>
<add key="DllPath" value="c:\oracle\product\1.1.0-xcopy-dep\BIN"/>
</oracle.dataaccess.client>
</configuration>
Run Code Online (Sandbox Code Playgroud)
现在,直接回答你的问题 - 我不相信Oracle支持Oracle.DataAccess.dll与它的客户端不匹配(至少不会倒退).您最好的选择是安装ODP.net与您的应用程序安装 - xcopy版本是最小的并包含"即时客户端"或者,您应该考虑最低系统要求 - 即.系统必须至少安装了odp.net的X版本.然后,当目标系统具有客户端的NEWER版本时,您可以针对该最小dll进行编译并依赖发布者策略重定向.
当然这也促使我询问建筑.您是否计划提示用户使用他们的Oracle帐户?如果没有,您必须小心保护应用程序将使用的共享服务帐户.您可能最好调用一个代表客户端进行oracle调用的Web服务 - 为您提供另一个安全层并简化您的客户端部署.
大多数版本的ODP.net都向后兼容数据库服务器 - 您当然可以将11g提供程序与10g数据库一起使用.
归档时间: |
|
查看次数: |
46729 次 |
最近记录: |