【问题标题】:Unable to find DLL when website runs in IIS网站在 IIS 中运行时找不到 DLL
【发布时间】:2022-05-24 00:14:08
【问题描述】:

当我使用 VS 在本地运行网站时,一切正常。

我正在使用 P/Invoke 调用 dll 中的函数。 DLL 在 C++ 中并且可以工作。

当我在 IIS 上部署网站时,我收到错误消息

Unable to load DLL 'SolvingProbelm.dll': The specified module could not be found. (Exception from HRESULT: 0x8007007E)

dll 位于 bin 文件夹中。应用程序池是 Classic 和 .net 2.0

任何建议将不胜感激。

问候

【问题讨论】:

  • 只是猜测,您的程序集是否必须位于Path 环境变量中列出的文件夹中?
  • 使用dependencywalker.com检查DLL的依赖关系
  • DLL 名称中的拼写错误是故意的吗?要收集有关该问题的更多详细信息,请使用 dependencywalker (dependencywalker.com) 检查 dll 是否具有未解决的依赖项。
  • 它在 VS 上本地工作,但是当部署到本地 IIS 时,它不起作用并显示此错误消息。
  • 请参考stackoverflow.com/questions/7996263/…以获取更多信息。

标签: c# asp.net c++ iis


【解决方案1】:

我曾经遇到过类似的问题。只需将SolvingProbelm.dll 复制到C:\WINDOWS\System32。希望它会奏效!它在我的情况下有效。实际上,本机 DLL 和 .Net DLL 的搜索方式不同。 IIS 还会在 C:\Windows\System32 文件夹中搜索本机 DLL。所以在那里复制你的 DLL 可以解决问题!

【讨论】:

  • 我已经添加到system32文件夹但没有成功。
【解决方案2】:

我知道已经 10 年了。但是如果有人再次遇到问题,只需确保 Build 下的 Project Properties 中的 PlatformConfiguration 没有更改强>。就我而言,Visual Studio 只是将平台更改为 All Platforms,即使我在使用 Any CPU 之前已经构建了所有 dll。

【讨论】:

    【解决方案3】:

    今天,我在使用有点旧的软件 (ASP.NET) 时遇到了同样的问题。正如你在这里看到的:

    终于在How do I get IIS to load a native DLL referenced by my WCF service?找到了我的问题的解释@拜托,看看它解决了我所有的疑惑。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-28
      • 2021-08-14
      • 1970-01-01
      相关资源
      最近更新 更多