繁体   English   中英

如何强制 ASP.NET Web 应用程序使用 BIN 文件夹中的 Oracle DLL?

[英]How to force an ASP.NET Web app to use Oracle DLLs in the BIN folder?

因此,由于某些语法更改,我有一个需要 Oracle 19c 客户端 (4.122.19.1) 的 Web 应用程序,而我们的 Dev IIS 服务器有一个较旧的 4.121.2.0 客户端。

无论如何,我将所有我听说过的正确支持 dll 放在应用程序的 Bin 目录中,从我所有的研究来看,这些是:oci.dll ociw32.dll Oracle.ManagedDataAccess.dll Oracle.Web.dll orannzsbb19 .dll oraocci19.dll oraocci19d.dll oraociei19.dll oraons.dll OraOps19.dll

这在我的 PC 上在 Visual Studio 中完美运行。 当我部署到 Dev IIS 服务器时(应用程序池在启用 32 位中运行,因为我的 PC 以 32 位运行 IISExpress)有各种 Oracle 连接错误。

现在,在进程资源管理器中,在我的 PC 上,我查看了 IISExpress,我可以看到它加载了上述所有 dll,尽管是从 GAC 加载的,因为我在本地安装了这个客户端。 然而,在开发服务器 Process Explorer 上,在我的 W3WP.exe 进程下,我只看到 Oracle.ManagedDataAccess.dll 和 Oracle.Web.dll,但没有一个支持 DLLS。 我相当确定缺少这些的事实,尤其是 OraOps19.dll,是问题所在。

我在 web.config 中使用了“DLLPath”,这没什么区别。 我总是被告知 Asp.Net总是首先尝试从 BIN 加载。 然而,在这里我相信它至少部分地忽略了它——无论是在我的 PC 中,它直接进入 GAC,还是来自 Dev IIS 服务器,它确实从 Bin 获得了正确的 .Web 和 .ManagedDataAccess,但没有别的。

我怎样才能让它忘记 Gac 并强制它在 Bin 中找到它需要的任何 Oracle 明智的东西? 谢谢

dll 被窃听; 不允许像这样发布对已签名 dll 的重大更改。 解决方法:

假设这些是 100% il 代码(不涉及 C++/clr)

  1. ildasm oracle dll 到 .il 和 .res 文件
  2. 删除对公钥的所有引用
  3. ilasm .il 和 .res 文件回到 dll
  4. 将您的应用程序与这些 dll 链接

现在它不再出现在 GAC 中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM