【问题标题】:LoadLibrary fails in WCF when changed from IIS Express to Local IIS in VS 2013在 VS 2013 中从 IIS Express 更改为本地 IIS 时,WCF 中的 LoadLibrary 失败
【发布时间】:2015-10-14 15:24:36
【问题描述】:

我有一个带有 wsHttpBinding 的 WCF 服务,它加载一个 C++ dll(它有自己的依赖项,如 CUDA),当通过 IIS Express 托管时效果很好。当我在项目属性中将其切换到本地 IIS 时,

LoadLibrary function fails with error 126.

我已将 system32 中的每个 dll 移动到 inetsrv(尝试过 System32/inetsrv 和 sysWOW64/inetsrv)目录(我知道这不是最好的方法,但我想知道这是否是问题所在)但是那没有解决问题。

我试图加载的 dll 不在这两个目录中(从来没有),我给 LoadLibrary 提供了 dll 的路径(即“C:\path\to\file.dll”),就像我一样说,在 IIS Express 中运行良好,但在本地 IIS 中失败并出现错误 126。

我已经做到了,所以用户组也拥有包含 dll 的目录的完全权限(因为我相信 IIS 工作进程使用用户组权限运行)但这对我也没有帮助。

任何帮助将不胜感激!如果我遗漏了上面的一些信息,请告诉我,我可以获得所需的信息。谢谢!

【问题讨论】:

  • 运行 IIS Express 使用您的登录帐户,这肯定会为您提供加载 dll 的权限。使用 IIS,您的服务将在您的服务分配到的应用程序池的任何帐户下运行。检查应用程序池帐户是否有足够的权限来加载 dll。
  • @NeillVerreynne 我已经检查过了,即使将身份更改为 LocalSystem(link 告诉我应该拥有所有需要的权限)我也遇到了同样的问题

标签: c# c++ wcf iis loadlibrary


【解决方案1】:

我找到了解决这个问题的方法。由于用户(具有 LocalSystem 的 IIS 应用程序池)身份的更改,以及作为我的用户(我登录的帐户)安装的依赖项,我不得不将该依赖项的路径添加到系统的“路径”环境变量中。

【讨论】:

    猜你喜欢
    • 2019-12-16
    • 1970-01-01
    • 1970-01-01
    • 2017-08-08
    • 2015-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多