我们最近一直在努力用新的Oracle dll更新我们的C#应用程序。我们为多个平台创建软件。因此,我们的软件解决方案既是winform桌面应用程序又是ASP.NET MVC Web应用程序。
两个应用程序都可以完美地运行Oracle 12.1。我们在软件的重新分配中添加了所有必要的Oracle dll。因此,桌面应用程序具有MSI中的所有dll,并且网站的发布具有〜\ Bin中的所有dll。确保在IIS上托管网站时,运行Web应用程序。这样我们的客户就不需要安装Oracle客户端。
现在出现了问题,因为更新到Oracle 12.2后,我们无法再运行Web应用程序了。桌面应用程序仍然正常运行,但是自Oracle 12.2起我们收到防火墙例外消息,如果我们不允许我们的桌面应用程序连接到互联网。 我们没有在Oracle 12.1或更低版本中获得该消息。
我们已经发布了我们的web应用程序与所有新的Oracle dll(与桌面相同的dll和与Web应用程序具有Oracle 12.1时相同的方式),从那时起我们就再也无法连接到我们的Oracle数据库了。我们得到以下错误:
Unable to load DLL 'OraOps12.dll': The specified module could not be found. (Exception from HRESULT: 0x8007007E)
System.TypeInitializationException: The type initializer for 'Oracle.DataAccess.Client.OracleConnection' threw an exception. ---> System.DllNotFoundException: Unable to load DLL 'OraOps12.dll': The specified module could not be found. (Exception from HRESULT: 0x8007007E)
at Oracle.DataAccess.Client.OpsInit.CheckVersionCompatibility(String version)
at Oracle.DataAccess.Client.OracleInit.Initialize()
at Oracle.DataAccess.Client.OracleConnection..cctor()
--- End of inner exception stack trace ---
我们已经检查过,但是那个dll就在那里。我们还将它放在不同的位置,看看这是否有效但不是。
奇怪的是,当我们将桌面应用程序复制到服务器时,桌面应用程序运行正常!桌面应用程序与web应用程序具有完全相同的dll! 我们用于桌面和Web应用程序的dll来自Oracle的XCopy文件夹: http://download.oracle.com/otn/other/ole-oo4o/ODAC122010Xcopy_32bit.zip x86 http://download.oracle.com/otn/other/ole-oo4o/ODAC122010Xcopy_x64.zip x64
有更多的人在努力解决这个问题,这是我们迄今为止所发现的:
Oracle.DataAccess.Client Dependencies这或多或少是我们的方法!
我们的服务器规格:
感谢您的阅读,希望有人可以帮助我们。
问候Leroy
答案 0 :(得分:0)
这样我们的客户就不需要安装Oracle客户端。
我认为这是一个坏主意,我不建议这样做。
要么
或
Oracle.ManagedDataAccess.dll
申请。如果没有进一步的信息很难确定您的问题,可能有以下几个原因:
%ORACLE_HOME%
位于%ORACLE_HOME%\bin
4.0版了吗?旧版本3.5不显示4.0(及以上)程序集。您还可以使用Process Monitor工具,以查看缺少哪个DLL和/或注册表项。