![](/img/trans.png)
[英]My WebApi works fine on Visual Studio but doesn't work on 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 端口上。 为了解决这个问题,
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.