Как обратиться к 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 шт):
Вольный перевод ответа 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*);
}
}