我目前正在开发一个引用第三方api dll的C# WebAPI项目。该组件是我添加到visual studio项目中的一个简单的COM引用。
web API发布在内部网服务器(IIS)上,集成安全&用户模拟打开,匿名关闭。
在我的本地机器上运行visual (2015)中的web时,一切都很完美。
在IIS服务器上运行已发布的web api时,一切都正常,但是当我向使用第三方库的控制器操作发送请求时,会收到以下错误:
System.Runtime.InteropServices.COMException 其他信息: CreateInstance失败。 在ThirdPartyLib.Connect()
第三方依赖项是使用它们的安装程序安装在服务器(以及我的dev计算机)上的。这注册了一套dll,并安装了相应的软件。我已经确认了正确的安装。事实上,使用相同dll的简单winforms应用程序工作得很好。
进程监视器显示w3wp.exe正在使用正确的dll。
我不知道我错过了什么?
如果这是一个权利问题,我该如何解决呢?
发布于 2016-11-16 00:09:54
可以将应用程序池标识更改为具有更高权限的用户。
注意:,您可以使用ASP.NET模拟,使用web来使用特定的标识运行整个应用程序,或者使用代码来使用特定的标识运行代码的一部分。例如,我测试了<identity impersonate="true" userName="r.aghaei" password="mypassword"/>的文件系统权限,并且它正常工作。只需在webconfig或代码中注意模拟,只要应用程序池用户有足够的权限允许模拟即可。有关如何使用模拟客栈配置或代码的详细信息,请参阅这 MSDN文章。
也不要忽视最起码的特权主体。
https://stackoverflow.com/questions/40532742
复制相似问题