Как обратиться к HttpContext.Current в Core 3?

Помогте разобраться с участком кода (сейчас провожу рефакторинг и переписываю код на Core 3)

private static bool IsHttpsRequest(this HttpRequestMessage request)
        {
            try
            {
                var currentRequest = HttpContext.Current?.Request;
                return (currentRequest == null)?
                    request.RequestUri.Scheme.ToLower() == "https": currentRequest.Headers.AllKeys.Contains("X-ARR-HTTPS")
                        ? currentRequest.Headers["X-ARR-HTTPS"]?.ToLower() == "on": request.RequestUri.Scheme.ToLower() == "https";
            }
            catch
            {
                return request.RequestUri.Scheme.ToLower() == "https";
            }
        }

В данном случаи я не знаю, как правильно будете переписать строку var currentRequest = HttpContext.Current?.Request в ASP.NET Core 3 так как данная конструкция больше не поддерживается, в интернете нашел статью о IHttpContextAccessor но и с ним не получилось добиться какого либо результата, можете пожсказать как правильно будет выглядеть данная строка на Core 3?


Ответы (1 шт):

Автор решения: aepot

Вольный перевод ответа StackOverflow: Access the current HttpContext in ASP.NET Core.

HttpContext.Current более не существует в ASP.NET Core, но там есть новый IHttpContextAccessor, который вы можете внедрить в список ваших зависимостей, и использовать, чтобы получить текущий HttpContext:

public class MyComponent : IMyComponent
{
    private readonly IHttpContextAccessor _contextAccessor;

    public MyComponent(IHttpContextAccessor contextAccessor)
    {
        _contextAccessor = contextAccessor;
    }

    public string GetDataFromSession()
    {
        return _contextAccessor.HttpContext.Session.GetString(*KEY*);
    }
}
→ Ссылка