在ASP.NET Core 2.0应用程序中,在超时时重定向到绝对URL

时间:2018-03-16 11:22:22

标签: c# azure asp.net-core asp.net-core-2.0 http-redirect

我正在运行一个ASP.NET Core 2.0应用程序,它利用在应用程序网关后面的Azure App Service中托管的ASP.NET身份。

我已经设置了一个自定义域,指向通过SSL的Application Gateway,然后终止SSL并将请求转发到我的后端池,该池使用超过80的默认* .azurewebsites.net域。

e.g。 要求custom.com:443 --->应用网关---> custom.azurewebsites.net:80

我已经配置了我的ASP.NET Core 2.0应用程序,使用以下中间件在1小时后将用户会话计时:

services.ConfigureApplicationCookie(options =>
{
    options.ExpireTimeSpan = TimeSpan.FromMinutes(60);
});

当用户超时然后执行其他操作时,他们将被重定向到custom.azurewebsites.net:80上的应用服务上的登录页面,而不是通过Application Gateway返回。

有没有办法在超时而不是相对的网址上重定向到绝对网址?

1 个答案:

答案 0 :(得分:1)

感谢您Tratcher的帮助。

Azure应用网关似乎没有添加X-Forwarded-Host标头,因此添加app.UseForwardedHeaders()中间件是徒劳的。相反,我添加了一个配置值来保存当前环境的主机,并使用自定义域覆盖每个请求的“Host”属性。

app.Use((ctx, next) =>
{
    ctx.Request.Host = new HostString(options.Value.CustomDomain);
    return next();
});

然后,ASP.NET身份验证中间件使用此值构建重定向URL。

我也written Microsoft some feedback on this issue here,因为我确信我的用例并不罕见。