Может ли HttpContext.Items быть доступным в .net Core DLL? - PullRequest
0 голосов
/ 03 июля 2019

Я использую приложение .Net Core 2.1 (веб-API).

Я могу получить доступ к HttpContext.Items["_logId"] в контроллере через:

HttpContext.Items["_logId"] = generalRequest.LogId;

Но когда я пытаюсь получить к нему доступ через библиотеку DLL библиотеки классов .Net Core:

 public class GeneralRequest
    {
        public string LogId => HttpContext.Items["_logId"];
        public string Body { get; set; }
        ...
    }

Я получаю сообщение об ошибке:

Невозможно получить доступ к нестатическому свойству. Элементы

enter image description here

Inболее ранние (не .Net Core) версии, мы могли бы обращаться к Элементам статическим способом.

Вопрос

Весь смысл добавления к Items заключается в том, чтомы сможем читать их везде по запросу.

Как я могу прочитать HttpContext.Items из библиотеки классов?

1 Ответ

2 голосов
/ 03 июля 2019

Вам нужно внедрить через ваш DI-фреймворк или собственную фреймворк ядра asp.net в конструктор:

public class GeneralRequest 
{
    public GeneralRequest(IHttpContextAccessor httpContextAccessor)
    {
        this.LogId = httpContextAccessor.HttpContext.Items["_logId"];
    }
}

Не забудьте добавить это в свой Startup.cs

 services.AddHttpContextAccessor();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...