繁体   English   中英

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

[英]WebApplication works fine on IIS Express but it doesn't on Local IIS

我的 Web 应用程序有问题。 我使用 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(并已启动)。 这是我在 Internet 上发现的问题的建议原因 - 第二个是授予权限(如下所述)。

详细信息:我在解决方案中有两个项目:库项目(用于连接到 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 的权限(或如何复制)?

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM