Я читал о настройке IHttpContextAccessor
как services.AddSingleton
scope, но я также читал о том, что работает "async local", и я также знаю о сложной работе async в ASP.Net, я имею в виду дляНапример, если метод действия контроллера равен async
, и он await
для вызова async
, то он может продолжаться с другим потоком, но волшебным образом некоторые вещи, связанные с потоками, поддерживаются (например, HttpContext
)
Мой конкретный вариант использования: мне нужно ввести класс MyConverter
в мой EF Core DbContext
, который использует его в OnModelCreating
.Однако эта модель кэшируется DbContext
, поэтому любой последующий запрос, даже если он будет иметь совершенно новый экземпляр DbContext
, будет использовать ту же самую модель, как и тот же самый экземпляр MyConverter
.(даже он настроил services.AddTransient
).Этот MyConverter
имеет конструктор и вставленный IHttpContextAccessor
, поэтому, исходя из очень похожих причин, он фактически будет также единичным для всех DbContext/MyConverter
случаев использования.
Вопрос
Этот конкретный экземпляр HttpContextAccessor
, созданный в самом первом запросе, будет обслуживать все последующие запросы в жизненном цикле веб-приложения.Будет ли это работать правильно?Есть ли здесь (параллелизм) ловушка?
(Правильно ли я полагаю, что не имеет большого значения , если мы используем один или несколько HttpContextAccessor
экземпляров, потому что его реализацияполучения HttpContext
будет использовать правильный путь, включая прерывания асинхронного локального переключателя потоков и т. д., чтобы вернуться с правильным HttpContext
?)