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

Redirect to absolute URL on timeout in ASP.NET Core 2.0 application

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

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

例如请求 custom.com:443 ---> 应用程序网关 ---> 自定义。azurewebsites.net:80

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

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

当用户超时然后执行另一个操作时,他们将被重定向到自定义应用服务上的登录页面。azurewebsites.net:80 而不是通过应用程序网关返回。

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

感谢 Tratcher 对此的帮助。

Azure 应用程序网关似乎没有添加 X-Forwarded-Host header 因此添加 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,因为我确信我的用例不会罕见。