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

Krz*_*rok 2 c# iis dll asp.net-mvc iis-express

我的网络应用程序有问题.我使用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权限(或如何复制该权限)?

小智 6

@Krzyrok,我最近在我使用外部库的项目中遇到了同样的问题.经过无休止的碎屑后,我得到了解决.将应用程序池标识从"ApplicationPoolIdentity"更改为"LocalSystem".我还从指定的IUSR将站点匿名身份验证更改为"应用程序池身份",但对其进行了测试,并且可以将其保留在IUSR上.我还为IUSR和IIS_IUSR的文件夹授予了权限.