繁体   English   中英

System.DllNotFoundException:发布到IIS时无法加载DLL'oci'

[英]System.DllNotFoundException: Unable to load DLL 'oci' when published to IIS

我有一个.net核心应用程序,必须使用System.Data.OracleClient.dll与oracle db连接。

当我在VS2017中运行此命令时,一切正常,但是当我发布并尝试运行连接到数据库的部分时,出现错误:

System.DllNotFoundException:无法加载DLL'oci':找不到指定的模块。 (来自HRESULT的异常:0x8007007E)位于System.Data.OracleClient.Oci.OciCalls.OciNativeCalls.OCIEnvCreate(IntPtr&envhpp,OciEnvironmentMode模式,IntPtr ctxp,IntPtr malocfp,IntPtr ralocfp,IntPtr mfreep,IntPtr mfreep

我是否缺少某种IIS模块? 我在同一台PC中有x64位Oracle。

可能是您缺少了OciCalls类调用的本机代码(可能是某些本机dll或类似的dll),或者找不到它在所查找的位置,无论如何,您都可以使用Assembly Binding Log Viewer对其进行调试以查看其位置探测以及缺少的东西。

对我来说,最终帮助了以下步骤:

  1. 从( http://www.oracle.com/technetwork/database/features/instant-client/index-097480.html )获得了x86 Oracle Instant Client
  2. 将即时客户端文件夹添加到环境路径的第一个位置,以便它将在所有其他Oracle路径之前。
  3. 重新启动机器。

暂无
暂无

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

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