У меня есть требование добавлять в заголовок каждого запроса к службе заголовок MyHeader. MyHeader - это jwt, который я получил, когда пользователь входит в систему.

Я попытался прочитать его из HttpContext.Request.Headers. Я пытаюсь получить к нему доступ в своем сервисе. Я мог получить результат в контроллере, но не на уровне сервиса. Может ли кто-нибудь помочь мне получить то же самое по классу обслуживания.

Я использую ядро ​​Asp.net

0
jubi 11 Фев 2021 в 10:22

1 ответ

Лучший ответ

В Startup # ConfigureServices:

services.TryAddSingleton<IHttpContextAccessor, HttpContextAccessor>();

В вашем классе обслуживания:

public class YourServiceClass
{
    private readonly IHttpContextAccessor _httpContextAccessor;
    ...

    // constructor
    public YourServiceClass(IHttpContextAccessor httpContextAccessor, ...)
    {
      _httpContextAccessor = httpContextAccessor;
      ...
    }

    public void YourServiceMethod() 
    {
      var headers = _httpContextAccessor.HttpContext.Request.Headers;
      ...
    }

    ...
1
Roar S. 11 Фев 2021 в 23:13