带有.NETCore RC2的RequireHttpsAttribute会在Azure上导致HTTP302重定向循环

时间:2016-06-21 21:21:52

标签: azure redirect azure-web-sites asp.net-core-1.0 .net-core-rc2

我一直在尝试使用RequireHttpsAttribute设置.NET上的.NETCore RC2 Web应用程序,但我遇到了问题。

为了消除我在代码中引入问题的可能性,我将事情简化为最低限度并使用“开箱即用”VS2015 .NETCore RC2模板重新创建它。

如果我部署标准VS2015 .NETCore RC2 Web应用程序,该网站运行正常。如果我然后将[RequireHttps]添加到控制器,它在本地工作正常,但在Azure上它会导致HTTP302重定向循环。这似乎是自RC1以来发生了变化,因为RequireHttpsAttribute在Azure中使用RC1正常工作。

这里有一个类似的问题:HTTP Error 310 ERR_TOO_MANY_REDIRECTS with RequireHttpsAttribute ASP.NET Core,但目前尚不清楚问题是关于RC1还是RC2(我实际上怀疑是RC2),但唯一的答案只适用于RC1。

关于此属性在AWS上导致重定向循环有一个类似的问题:RequireHttps causes redirect loop on Amazon Elastic Load Balancer但这是MVC4,并且还提到了Azure不使用的标头。

2 个答案:

答案 0 :(得分:3)

目前Azure和ASP.NET Core RC2中有bug,它与Kestrel和IIS的连接方式以及HTTPS标头有关,表明它是否是HTTPS请求。

我知道它可能很快就会在RTM上得到解决,因为错误标记为已完成。

我们采取的解决方法是使用web.config从任何HTTP请求到HTTPS进行永久重定向。我们使用dotnet-transform包仅在Publish上插入重定向(因此在不适用的开发环境中本地)。如果您需要它作为FYI,这是可选的。

答案 1 :(得分:1)

您可以通过在Startup.cs中向ConfigureServices添加以下行来解决此问题(并添加"使用Microsoft.AspNetCore.HttpOverrides;")

services.Configure<ForwardedHeadersOptions>(options =>
        {
            options.ForwardedHeaders = ForwardedHeaders.XForwardedProto;
        });