【发布时间】:2020-12-16 12:55:22
【问题描述】:
因此,由于某些语法更改,我有一个需要 Oracle 19c 客户端 (4.122.19.1) 的 Web 应用程序,而我们的 Dev IIS 服务器有一个较旧的 4.121.2.0 客户端。
无论如何,我将所有我听说的正确支持 dll 放在应用程序的 Bin 目录中,根据我的所有研究,这些 dll 是: 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 中完美运行。当我部署到开发 IIS 服务器时(应用程序池在启用 32 位中运行,因为我的电脑在 32 位中运行 IISExpress)有各种 Oracle 连接错误。
现在,在我的 PC 上的 Process Explorer 中,我查看了 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 中找到它需要的任何东西? 谢谢
【问题讨论】:
-
在Visual Studio中,当你在References下右击DLL时,“Copy Local”的值是多少?此外,您可以选择将“特定版本”设置为 True,然后将“版本”设置为您需要的确切版本。也许值得一试..
标签: c# asp.net oracleclient