【发布时间】:2016-10-01 22:51:30
【问题描述】:
我们有一个最近升级到 RC2 的 ASP.NET Core 应用程序。升级前一切正常,升级后一切都在 Dev 和 Staging 环境中正常工作,但在生产环境中,应用程序对 MVC 端点未处理的每个请求都以 502 响应:
502 - Web 服务器在充当网关或代理服务器时收到无效响应。 您要查找的页面有问题,无法显示。当 Web 服务器(作为网关或代理)联系上游内容服务器时,它收到了来自内容服务器的无效响应。
这意味着例如 https://www.myapp.com/somenonexistingroute 返回 502 而不是 404,而对现有端点的调用工作正常。
问题是我们在跨源上下文中使用应用程序,因此我们需要选项请求(预检 cors 请求)才能工作,并且它们也以 502 响应。
所有环境都运行装有 IIS 8.5 和 ASP.NET Core 平台处理程序的 Windows Server 2012。
发生了什么事?
更新
经过更多调试,我们发现这可能是由框架中的错误引起的。我们创建了一个GitHub issue
【问题讨论】:
-
快速提问;您在
ConfigureServices中添加了Microsoft.AspNet.Cors和services.AddCors();? -
是的,这在其他环境中运行良好。通过 IIS 添加这些标头也会使选项请求返回 502,导致浏览器无法处理实际请求。
-
那么,日志说什么 - 你有子代码 502.{x} 吗?生产环境有什么不同,有没有负载均衡HW/SW?你运行 ARR 吗?它是否部署在 Azure VM 上?
-
无子代码。它没有部署在 Azure 中,而是部署在来自托管暂存和测试环境的同一提供商的 VM 上(尽管它们并不相同)。我不确定负载平衡,我认为 IIS 前面有一个负载平衡器,但响应显然来自 IIS,所以我不确定这是否是问题所在。我知道的一件事是生产环境没有互联网访问权限,因此 ASP.NET Core 模块安装程序的工作方式有点不同。
-
我不确定我们是否有 ARR。
标签: c# asp.net iis asp.net-core asp.net-core-mvc