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();
});