Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 多个Oracle实例会导致问题_C#_Oracle_.net Assembly_Gac_Odp.net - Fatal编程技术网

C# 多个Oracle实例会导致问题

C# 多个Oracle实例会导致问题,c#,oracle,.net-assembly,gac,odp.net,C#,Oracle,.net Assembly,Gac,Odp.net,我一直在使用一个oracle客户端,一切都很好,但我不得不安装另外两个不同版本的oracle。现在它正在引发问题 蟾蜍开始抛出异常弹出窗口,上面写着“模块oran11.dll中地址的访问冲突” ASP.NET应用程序的OracleConnection开始引发空异常 通过在系统环境变量中重新排列路径值,将原始Oracle路径置于其他路径之前,我解决了1。但仍然在与2斗争,我研究了由Process Explorer加载dll。看起来好像加载了错误的oracle DLL,一个是11.2版,另一个是12

我一直在使用一个oracle客户端,一切都很好,但我不得不安装另外两个不同版本的oracle。现在它正在引发问题

  • 蟾蜍开始抛出异常弹出窗口,上面写着“模块oran11.dll中地址的访问冲突”
  • ASP.NET应用程序的OracleConnection开始引发空异常
  • 通过在系统环境变量中重新排列路径值,将原始Oracle路径置于其他路径之前,我解决了1。但仍然在与2斗争,我研究了由Process Explorer加载dll。看起来好像加载了错误的oracle DLL,一个是11.2版,另一个是12.1版

    当然,我可以尝试通过卸载所有这些oracle来修复这个问题,并且只重新安装一个。但是我必须为不同的开发设置保留这3个


    如何修复这些oracle路径问题?有人有线索吗?

    这些程序集保存在GAC中

    转到
    C:\Windows\assembly
    ,选择要删除的程序集,右键单击并选择
    Uninstall
    。程序将不再加载这些程序集

    如果必须重新安装,它们仍在Oracle文件夹中,因此可以使用
    gacutil

    从那里再次安装。对于旧的“非托管”提供程序,ODP.net由托管部分(Oracle.dataaccess.dll)和非托管部分(Oracle主目录中几乎所有其他dll)组成。加载oracle.dataaccess.dll后,它将按以下搜索顺序查找所需的未受管理的dll:

    Oracle.DataAccess.dll搜索相关的非托管dll(例如 作为Oracle客户端),基于以下顺序:

    Directory of the application or executable.
    
    DllPath setting specified by application config or web.config.
    
    DllPath setting specified by machine.config.
    
    DllPath setting specified by the Windows Registry.
    
    HKEY_LOCAL_ MACHINE\Software\Oracle\ODP.NET\version\DllPath
    
    Directories specified by the Windows PATH environment variable.
    

    我的第一个猜测是您的bin目录中有一个旧版本的oracle.dataaccess.dll。最简单的修复方法是指定一个“DllPath”配置变量,并指向该asp.net站点的旧oracle主页:

    <configuration>
     <oracle.dataaccess.client>
       <add key="DllPath" value="C:\app\user\product\11.1.0\your_old_client\bin"/>
       ...
    
    
    

    谢谢,但是这些dll(oraons.dll、oraops12.dll等)正在通过QTAgent32.exe从其安装路径加载。这就是为什么我认为这是一个与路径有关的问题。它们不在c:\windows\assembly\中。您的蟾蜍问题已解决,对吗?这只是第二个问题,对吗?另外,蟾蜍不使用.NET。是的,蟾蜍的问题解决了。只有第二个问题困扰着我:(但这个问题与TOAD无关,对吗?所以从GAC中删除程序集可以解决问题。抱歉,我不明白你的意思。我在“系统环境变量”中重新排列了路径值以解决第一个问题,所以我假设第二个问题也可能与路径相关。而且没有类似于因果关系的DLLGAC中的g问题。谢谢!!!这并没有解决我的问题,但是进一步研究的好线索。我发现machine.config被设置为较新的版本,所以尝试更改它,它稍微改变了症状,但无法修复我的原始问题。所以决定卸载所有并立即重新安装我需要的一个。