【发布时间】: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