我目前正在开发一个引用第三方API的C#WebAPI项目。该组件是一个简单的COM引用,我添加到visual studio项目中 Web API发布在具有集成安全性和安全性的Intranet服务器(IIS)上。用户模拟已开启,匿名身份验证已关闭。
在我的本地机器上运行visual studio(2015)中的web api时,一切都运行良好。
在我们的IIS服务器上运行已发布的web api时,一切都运行正常,但是当我向使用第三方库的控制器操作发送请求时,我收到以下错误:
System.Runtime.InteropServices.COMException
补充信息:
CreateInstance失败。
在ThirdPartyLib.Connect()
使用安装程序在服务器(以及我的开发机器)上安装了第三方依赖项。这注册了一套dll并安装了附带的软件。我已经验证了正确的安装。实际上,使用相同dll的简单winforms应用程序工作正常。
进程监视器显示w3wp.exe正在使用正确的dll。
我不确定我错过了什么? 如果这是一个权利问题,我将如何解决它?
答案 0 :(得分:2)
您可以将应用程序池标识更改为具有更高权限的用户。
注意:您可以使用Web配置使用ASP.NET模拟以特定标识运行整个应用程序,或使用代码使用特定标识运行部分代码。例如,我测试<identity impersonate="true" userName="r.aghaei" password="mypassword"/>
获得文件系统权限,并且它正常工作。只需在webconfig或代码中注意模仿,只要应用程序池用户有足够的权限允许模拟即可。有关如何使用模拟inn配置或代码的详细信息,请参阅this MSDN知识库文章。
也不要忽视最小特权委托人。