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

时间:2015-06-27 20:22:40

标签: c# asp.net-mvc iis dll 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权限(或如何复制该权限)?

2 个答案:

答案 0 :(得分:6)

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

答案 1 :(得分:0)

如果有人遇到这个问题,可能是因为你没有为你的 localhost 站点配置 SSL。该站点可能正在尝试通过 https 端口 443 进行通信,但在那里找不到该站点。该站点可能仅托管在不安全的 http 端口上。为了解决这个问题,

  1. 转到 IIS 管理器
  2. 右键点击网站
  3. 点击右侧的绑定
  4. 点击添加
  5. 选择 https
  6. 选择 IIS Express 证书
  7. 点击确定