Asp.net core SSL在负载平衡器处终止时的HTTPS URL

Asp.net core SSL在负载平衡器处终止时的HTTPS URL,asp.net-core,https,Asp.net Core,Https,当我返回CreateDataActionResult或从API控制器使用UriHelper.GetDisplayUrl(请求)获取当前请求url时,我需要我的ASP.NET核心应用程序返回httpsurl。我不想让我的服务处理https流量,因此不希望使用https重定向。理想情况下,任何生成url/uri的进程都应该能够将模式重写为https:// 背景 我在AWS Fargate上的Docker中运行了一个服务,它位于负载平衡器后面,负载平衡器终止SSL通信并将请求作为HTTP转发到我的As

当我返回
CreateDataActionResult
或从API控制器使用
UriHelper.GetDisplayUrl(请求)
获取当前请求url时,我需要我的ASP.NET核心应用程序返回
https
url。我不想让我的服务处理https流量,因此不希望使用https重定向。理想情况下,任何生成url/uri的进程都应该能够将模式重写为
https://

背景


我在AWS Fargate上的Docker中运行了一个服务,它位于负载平衡器后面,负载平衡器终止SSL通信并将请求作为HTTP转发到我的Asp.Net核心API。该API具有返回
createDataActionResult
的操作,该操作形成
位置
标题响应中提供的url。不幸的是,这些URL是
http://
,而不是
https://
,因为我的服务不知道它应该返回
https://

,我可以通过编写一个自定义中间件来解决这个问题,该中间件使用配置值来标识我正在运行的环境,并有选择地更改传入的请求。希望这能帮助下一个遇到这个问题的人

app.Use(async (context, next) =>
{
    // Rewrite the inbound Request when running remotely (where this key isn't set)
    if (Configuration["RunningEnvironment"] == null)
    {
        context.Request.IsHttps = true;
        context.Request.Scheme = "https";
    }

    await next.Invoke();
});