【问题标题】:System.DllNotFoundException: Unable to load DLL 'oci' when published to IISSystem.DllNotFoundException:发布到 IIS 时无法加载 DLL 'oci'
【发布时间】:2017-11-28 19:04:08
【问题描述】:

我有一个 .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, Int32 xtramem_sz, IntPtr usrmempp)

我是否缺少某种 IIS 模块?我在同一台 PC 上安装了 x64 位 Oracle。

【问题讨论】:

  • 你用谷歌搜索了那个错误吗(无法加载 DLL 'oci') - 有很多点击...
  • 我有。但结果还没有定论。 .net core 也没什么好说的。

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


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-02-08
      • 1970-01-01
      • 2011-01-06
      • 2017-06-11
      • 1970-01-01
      • 2012-04-12
      • 2022-01-10
      相关资源
      最近更新 更多