【发布时间】:2016-11-16 08:09:54
【问题描述】:
我目前正在开发一个引用第三方 api dll 的 C# WebAPI 项目。该组件是我添加到 Visual Studio 项目中的一个简单 COM 引用。
Web API 发布在 Intranet 服务器 (IIS) 上,集成安全性和用户模拟已打开,匿名身份验证已关闭。
在我的本地机器上的 Visual Studio (2015) 中运行 Web api 时,一切正常。
在我们的 IIS 服务器上运行已发布的 web api 时,一切正常,但是当我向使用第三方库的控制器操作发送请求时,我收到以下错误:
System.Runtime.InteropServices.COMException
附加信息:
创建实例失败。
在 ThirdPartyLib.Connect()
使用他们的安装程序在服务器(以及我的开发机器)上安装了第三方依赖项。这注册了一组 dll 并安装了随附的软件。我已经验证了正确的安装。事实上,使用相同 dll 的简单 winforms 应用程序就可以正常工作。
进程监视器显示 w3wp.exe 正在使用正确的 dll。
我不确定我错过了什么?
如果这是一个权利问题,我将如何解决?
【问题讨论】:
-
项目是否有足够的权限访问dll?
-
我不确定如何找出答案。 UAC 已关闭。它是一个使用集成安全性的 Intranet 服务器,因此当我访问它时,我的帐户被假冒。
-
@ThomasWeller 我已经编辑了这篇文章并进行了一些额外的说明。
-
将应用程序池用户更改为具有更高权限的用户进行测试。您也可以以更高的权限运行该部分代码,例如查看at this。
-
@RezaAghaei 这解决了问题。还有一个问题:如果启用了用户模拟(并且用户应该有足够的权限),为什么应用程序池用户仍然需要管理员权限?
标签: c# visual-studio asp.net-web-api