C# WebApplication在IIS Express上运行良好,但在本地IIS上不起作用

C# WebApplication在IIS Express上运行良好,但在本地IIS上不起作用,c#,asp.net-mvc,iis,dll,iis-express,C#,Asp.net Mvc,Iis,Dll,Iis Express,我的web应用程序有问题。我使用VS2013以管理员身份运行和Windows 8进行开发 当我使用IIS Express进行调试时,一切正常,没有任何错误,我以管理员身份运行VS。当我将项目属性更改为使用本地IIS时,它已安装-我无法使用GAC Microsoft.FlightSimulator.SimConnect中的外部库。我还以管理员身份运行VS。 抛出错误:对COM组件的调用返回了HRESULT E_FAIL-这对我来说没有任何意义。这是在创建新的SimConnect对象时引发的: va

我的web应用程序有问题。我使用VS2013以管理员身份运行和Windows 8进行开发

当我使用IIS Express进行调试时,一切正常,没有任何错误,我以管理员身份运行VS。当我将项目属性更改为使用本地IIS时,它已安装-我无法使用GAC Microsoft.FlightSimulator.SimConnect中的外部库。我还以管理员身份运行VS。 抛出错误:对COM组件的调用返回了HRESULT E_FAIL-这对我来说没有任何意义。这是在创建新的SimConnect对象时引发的: var simconnect=新的simconnect。。。 OFC,要使用SimConnect,首先应该启动Microsoft飞行模拟器并启动它。这就是我在互联网上发现的问题的原因——第二个问题是授予下面描述的权限

详情: 我在解决方案中有两个项目:用于连接到FSX的库项目和用于显示结果的web项目MVC。 1我试图将整个库项目内容移动到MVC项目中—什么都没有。 2我使用IIS管理器使用单独的AppPool发布我的网站-结果与本地IIS相同。 3我为我自己的AppPool以及IUSR、IIS_IUSR和DefaultAppPool授予了项目所在文件夹的权限-完全访问权限。什么也没有。 4我以管理员身份运行FSX-也没有:/

我找到了解决办法:我将库项目移动到另一个项目控制台应用程序中,在那里我使用HttpSelfHostConfiguration来承载它。稍后,我从主项目MVC调用这个api。对于这个解决方案,我测试了本地IIS[调试]和IIS管理器,一切正常。我只能以管理员身份运行HostAPI项目

我很好奇为什么会出现这种异常。此外,如何解决这一问题:

这似乎是权限的问题——但我授予了每个使用过的应用程序池。
可能是GAC中缺少dll权限的原因吗?我不这么认为,但我不知道该怎么办。如果是,如何在GAC中授予dll权限或如何复制该权限

@Krzyrok最近在我的一个项目中遇到了同样的问题,我使用了外部库。在吃了无数的面包屑之后,我把它解决了。将应用程序池标识从ApplicationPoolIdentity更改为LocalSystem。我还将站点匿名身份验证从指定的IUSR更改为应用程序池标识,但对其进行了测试,可以将其保留在IUSR上。我还授予了IUSR和IIS_IUSR文件夹的权限。

如果有人遇到此问题,可能是因为您没有为本地主机站点配置SSL。该站点可能正在尝试通过https端口443进行通信,但在那里找不到该站点。站点只能承载在不安全的http端口上。要解决这个问题,

转到IIS管理器 右键点击网站 单击右侧的绑定 点击添加 选择https 选择IIS Express证书 单击“确定”
web应用程序是否在完全信任的情况下运行?因此您的应用程序需要飞行模拟器才能运行?这在使用用户模式进程(如IIS Express)时可能会起作用,但在无人登录的情况下,您如何确保它正在运行。依赖基于IIS的应用程序中的GUI进程不是一个好主意,也可能不起作用。@我添加了Proxytype:根据这一点,你的意思是什么?:本地IIS仍然没有:/@PeterHahndorf是的,我的应用程序需要运行FSX。我的目的是创建一个应用程序,在网站上显示当前航班-一个人在FSX飞行中玩,其他人在网站上的同一网络中观看他的航班,例如在手机上。网站运行在FSX所在的同一台计算机上。我找到了上述问题中提到的唯一解决方案,但我很好奇:如果没有单独的主机应用程序,我能解决这个问题吗?我很高兴:?或者我应该选择不同的方式来显示网络中的飞行数据吗?@这是一个特殊的要求,我从来没有遇到过。如果它适用于IIS Express,为什么不直接使用它呢。我认为有可能让远程机器使用它。