Джитендра Гунд, MVP сообщества C# Corner и глава отделения C# Corner Pune, рассказал как получить доступ к HttpContext.
HttpContext — это класс в C#, который содержит всю информацию о HTTP-запросе: авторизацию, аутентификацию, запрос, ответ, сеанс, элементы, пользователей, параметры формы и т.д. Каждый HTTP-запрос создает новый объект HttpContext с текущей информацией.
Как получить доступ к HttpContext в контроллере?
Контроллеры предоставляют свойство ControllerBase.HttpContext, чтобы мы могли напрямую обращаться к свойствам HttpContext для текущего запроса HTTP. Лучше всего всегда обращаться к HttpContext через DI с реализацией HttpContextAccessor по умолчанию.
Пример ниже показывает доступ к HttpContext в методе действия GET-контроллера:
[HttpGet("/getDetails")]
public string GetDetails()
{
var result = "Method - " + HttpContext.Request.Method +
" Path - " + HttpContext.Request.Path;
return result;
}
В выводе получим: Method - GET Path - /getdetails
Как получить доступ к HttpContext в Service?
В ASP.NET Core мы можем сделать это с помощью интерфейса IHttpContextAccessor и его реализации по умолчанию HttpContextAccessor. Эту зависимость необходимо добавлять, только если мы хотим получить доступ к HttpContext в Service.
Чтобы использовать HttpContext в Service, нужно сделать следующие два шага:
1. Зарегистрируйте зависимость с помощью встроенного контейнера внедрения зависимостей .NET Core, как показано ниже в классе Startup.cs метода ConfigureServices:
public void ConfigureServices(IServiceCollection services)
{
services.AddControllers();
//IHttpContextAccessor register
services.AddHttpContextAccessor();
services.AddTransient<IUserService, UserService>();
}
2. Введите IHttpContextAccessor в созданный конструктор Service и получите доступ к свойствам HttpContext, как показано ниже:
namespace Get_HttpContext_ASP.NET_Core
{
using Microsoft.AspNetCore.Http;
public class UserService : IUserService
{
private readonly IHttpContextAccessor _httpContextAccessor;
public UserService(IHttpContextAccessor httpContextAccessor)
{
_httpContextAccessor = httpContextAccessor;
}
public string GetLoginUserName()
{
return _httpContextAccessor.HttpContext.User.Identity.Name;
}
}
}
Пример также можно скачать отсюда.
Примечание: В .NET вместо HttpContext использовали HttpContext.Current, но в ASP.NET Core это свойство не используют больше(см. здесь).
Оригинальная статья доступна по ссылке.
На фоне роста спроса на ликвидность в бычьем рынке 2025 года, криптозаймы снова выходят на…
Прокси (proxy), или прокси-сервер — это программа-посредник, которая обеспечивает соединение между пользователем и интернет-ресурсом. Принцип…
Согласитесь, было бы неплохо соединить в одно сайт и приложение для смартфона. Если вы еще…
Повсеместное распространение смартфонов привело к огромному спросу на мобильные игры и приложения. Миллиарды пользователей гаджетов…
В перечне популярных чат-ботов с искусственным интеллектом Google Bard (Gemini) еще не пользуется такой популярностью…
Скрипт (англ. — сценарий), — это небольшая программа, как правило, для веб-интерфейса, выполняющая определенную задачу.…