Ler*_*jer 6 .net c# oracle dll odp.net
我们最近一直在努力使用新的 Oracle dll 更新我们的 C# 应用程序。我们为多个平台创建我们的软件。所以我们的软件解决方案既是一个 winform 桌面应用程序,也是一个 ASP.NET MVC web 应用程序。
这两个应用程序都可以完美地独立运行 Oracle 12.1。我们在重新分发我们的软件时添加了所有必要的 Oracle dll。因此,桌面应用程序在 MSI 中包含所有 dll,而网站的发布在 ~\Bin 中包含所有 dll。确保当网站托管在 IIS 上时,web 应用程序运行。这样我们的客户就不需要安装 Oracle Client。
现在问题来了,因为更新到 Oracle 12.2,我们不可能再运行 web 应用程序了。桌面应用程序仍然运行良好,尽管从 Oracle 12.2 开始,如果我们不允许桌面应用程序连接到 Internet,我们会收到防火墙异常消息。我们在 Oracle 12.1 或更低版本中没有收到该消息。

我们已经使用所有新的 Oracle dll 发布了我们的 web 应用程序(与桌面相同的 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 ---
Run Code Online (Sandbox Code Playgroud)
我们已经检查过,但是是的,dll 在那里。我们还把它放在不同的位置,看看这是否可行,但不行。
奇怪的是,当我们将桌面应用程序复制到服务器时,桌面应用程序运行良好!桌面应用程序与 Web 应用程序具有完全相同的 dll!我们用于桌面和 web 应用程序的 dll 来自 Oracle 的 XCopy 文件夹:http : //download.oracle.com/otn/other/ole-oo4o/ODAC122010Xcopy_32bit.zip x86 http://download.oracle.com/ otn/其他/ole-oo4o/ODAC122010Xcopy_x64.zip x64
有更多的人在为这个问题而苦苦挣扎,这是我们目前发现的:
Oracle.DataAccess.Client Dependencies这或多或少是我们的方法!
我们的服务器规格:
感谢阅读,希望有人能帮助我们。
问候勒罗伊
这样我们的客户就不需要安装Oracle Client。
我认为这是一个坏主意,我不建议这样做。
任何一个
或者
Oracle.ManagedDataAccess.dll您的申请即可。在没有进一步信息的情况下很难确定您的问题,可能有以下几个原因:
%ORACLE_HOME%并且%ORACLE_HOME%\bin在gacutil.exe4.0版本吗?旧版本 3.5 不显示 4.0(及更高版本)程序集。您还可以使用进程监视器工具来查看缺少哪个 DLL 和/或注册表项。