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

时间:2017-11-28 19:04:09

标签: c# dll asp.net-core system.data.oracleclient

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

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

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

我错过了某种IIS模块吗?我在同一台PC上有x64位oracle。

2 个答案:

答案 0 :(得分:0)

可能是您缺少OciCalls类调用的本机代码,    也许是一些原生dll或类似的,或者它没有找到它    在它正在寻找的地方,无论如何你可以使用 Assembly Binding Log Viewer进行调试    看看它在哪里探测,以及缺少什么。

答案 1 :(得分:0)

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

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