AsyncLocal <T>с веб-API ASP.NET и приложениями WCF - PullRequest
0 голосов
/ 11 октября 2018

У меня есть ASP.NET Web API и приложения WCF.

Мне нужен «неявный» контекст, который будет передаваться при каждом запросе.В основном хранит переменные, необходимые для регистрации, или некоторые важные заголовки, которые могут изменить поведение выполнения запроса.Эти переменные собираются в событии BeginRequest и могут использоваться где угодно в контексте одного запроса.Я не хочу явно передавать в качестве параметров эти переменные везде и до конца в моем коде.

С этого момента я использовал HttpContext.Current.Items, и он работал нормально.Мое приложение было в основном синхронным и теперь переходит на асинхронный код.Я все еще мог бы использовать HttpContext.Current.Items для своих асинхронных потоков, но он не работает с .ConfigureAwait(false) (очевидно, становятся нулевыми после), и я хотел бы воспользоваться этим (убрать накладные расходы при повторном входе в контекст).

Я начал реализацию с AsyncLocal<T>, чтобы сохранить неявные переменные контекста, и мне было интересно, насколько это безопасно и полезно?Возможно ли, что эти переменные могли просочиться между потоками при переключении из одного потока в другой в асинхронном потоке или из одного запроса в другой?

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