WebApplication在IIS Express上运行良好,但它不在本地IIS上

问题描述:

我的web应用程序出现问题。我开发使用VS 2013(以管理员身份运行)和Windows 8.WebApplication在IIS Express上运行良好,但它不在本地IIS上

当我使用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的权限(或如何复制)?

+0

是在完全信任下运行的Web应用程序吗? – Proxytype

+0

因此,你的应用程序需要飞行模拟器运行?当使用像IIS Express这样的用户模式进程时,这可能会起作用,但是当没有人登录时,您是否确定它正在运行。从您的基于IIS的应用程序依赖于GUI进程不是一个好主意,可能无法正常工作。 –

+0

@Proxytype我已添加: ' securityPolicy>' 根据此(您的意思是?):https:// msdn.microsoft.com/en-us/library/wyts434y(v=vs.140).aspx 本地IIS仍然没有:/ – Krzyrok

@Krzyrok,在我使用外部库的项目中,最近出现了同样的问题。继无尽的面包屑后,我解决了它。将您的应用程序池标识从“ApplicationPoolIdentity”更改为“LocalSystem”。我还将指定的IUSR中的网站匿名身份验证更改为“应用程序池标识”,但对其进行了测试,并且可将其留在IUSR上。我还授予了IUSR和IIS_IUSR文件夹的权限。