【发布时间】:2015-06-27 20:22:39
【问题描述】:
我的网络应用程序有问题。我使用 VS 2013(以管理员身份运行)和 Windows 8 进行开发。
当我使用 IIS Express 进行调试时 - 一切正常,没有任何错误(我以管理员身份运行 VS)。当我更改项目属性以使用本地 IIS(已安装)时 - 我无法使用放置在 GAC 中的外部库(Microsoft.FlightSimulator.SimConnect)。我也以管理员身份运行 VS。
抛出的错误:“HRESULT E_FAIL 已从对 COM 组件的调用中返回”——这对我没有任何意义。这是在创建新的 SimConnect 对象时抛出的:var simconnect = new SimConnect(...)
OFC,要使用 SimConnect,首先应该启动 Microsoft Flight Simulator(并且它已经启动)。这是我在互联网上发现的问题的建议原因 - 第二个是授予权限(如下所述)。
详情:
我在解决方案中有两个项目:库项目(用于连接到 FSX)和 Web 项目(MVC - 呈现结果)。
1) 我试图将整个库项目内容移动到 MVC 项目 - 没有。
2) 我使用 IIS 管理器发布我的网站(使用单独的 AppPool) - 结果与本地 IIS 相同。
3) 我为我自己的 AppPool 以及 IUSR、IIS_IUSR 和 DefaultAppPool 授予了文件夹(放置项目的位置)的权限 - 完全访问权限。没事了。
4)我以管理员身份运行 FSX - 也没有:/
我找到了解决方法:我将库项目移动到另一个项目 - 我使用 HttpSelfHostConfiguration 托管它的控制台应用程序。后来,我从主项目(MVC)中调用了这个 api。对于此解决方案,一切正常(我测试了本地 IIS [调试] 以及 IIS 管理器)。我只需要以管理员身份运行 Host Api 项目。
我很好奇异常的原因是什么。另外:如何解决这个问题:)
这似乎是权限的问题 - 但我授予了每个使用过的 AppPool。
可能是GAC中缺少dll权限的原因吗?我不这么认为,但我不知道该怎么做。如果是,如何在 GAC 中授予 dll 权限(或如何复制)?
【问题讨论】:
-
Web 应用程序是否在完全信任下运行?
-
所以你的应用需要飞行模拟器才能运行?当使用像 IIS Express 这样的用户模式进程时,这可能会起作用,但是当没有人登录时,你要确保它在运行。从基于 IIS 的应用程序中依赖 GUI 进程不是一个好主意,并且可能无法正常工作。
-
@Proxytype 我已经添加:
<securityPolicy> <trustLevel name="Full" policyFile="internal"/> </securityPolicy>根据这个(你的意思是那个吗?):msdn.microsoft.com/en-us/library/wyts434y(v=vs.140).aspx 本地 IIS 仍然没有:/ -
@PeterHahndorf 是的,我的应用程序需要 FSX 才能运行。我的目的是创建一个应用程序来在网站上展示当前的航班 - 一个人在 FSX(苍蝇)中播放,其他人在网站上(例如在电话上)观看他的航班(在同一网络中)。网站在 FSX 所在的同一台计算机上运行。我找到了上面问题中提到的唯一解决方案,但我很好奇:我可以在没有单独的主机应用程序的情况下解决这个问题吗(它正在工作,我对此很满意:))?或者也许我应该选择不同的方式在网络中显示带有航班数据的视图?
-
@这是您的特殊要求,我从未遇到过。如果它适用于 IIS Express,为什么不直接使用它。我认为可以将其提供给远程机器。
标签: c# asp.net-mvc iis dll iis-express