在 VS 2013 中从 IIS Express 更改为本地 IIS 时,LoadLibrary 在 WCF 中失败
LoadLibrary fails in WCF when changed from IIS Express to Local IIS in VS 2013
我有一个带有 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 工作进程在用户组权限下运行)但这对我也没有帮助。
如有任何帮助,我们将不胜感激!如果我遗漏了上面的某些信息,请告诉我,我可以得到所需的信息。谢谢!
我找到了解决这个问题的方法。由于用户(具有 LocalSystem 的 IIS 应用程序池)身份的更改,以及作为我的用户(我登录的帐户)安装的依赖项,我必须将该依赖项的路径添加到系统的 "path" 环境变量中。
我有一个带有 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 工作进程在用户组权限下运行)但这对我也没有帮助。
如有任何帮助,我们将不胜感激!如果我遗漏了上面的某些信息,请告诉我,我可以得到所需的信息。谢谢!
我找到了解决这个问题的方法。由于用户(具有 LocalSystem 的 IIS 应用程序池)身份的更改,以及作为我的用户(我登录的帐户)安装的依赖项,我必须将该依赖项的路径添加到系统的 "path" 环境变量中。