Используя ThreadContext вместо HttpContext?
У меня есть трехуровневая архитектура (Контроллер / Сервис / Репозиторий), а также Домен для моделей, которые понадобятся всем слоям. Каждый слой включает в себя домен, а каждый слой включает свой "родительский" слой. Итак, Репозиторий -> Сервис -> Api
Когда в API поступает запрос, выполняется некоторая аутентификация и авторизация. Несколько организаций используют одни и те же таблицы, поэтому эта аутентификация также включает в себя информацию об определенной области. Я называю это ApiContext
, Поскольку эта информация разрешена в слое Api, она недоступна для уровней более высокого уровня.
Обычно я видел, как люди используют HttpContext для передачи контекста запроса, но я пытаюсь не допустить, чтобы уровни сервиса и хранилища включали WebApi.
Чтобы получить ApiContext в цепочке, я думаю об использовании ThreadContext, где ApiContext имеет Current
поле, которое устанавливается фильтром запроса.
class ApiContext {
[ThreadStatic]
public static ApiContext Current;
}
Я не знаком с ThreadContext, но я уверен, что HttpContext использует его, поэтому я думаю, что я должен его использовать.
Вопросы о ThreadContext.
Будет ли использование асинхронных методов нарушать ThreadContext? Будет ли использование Thread.Run(() => {}) нарушать ThreadContext? Есть ли причина, по которой я не должен использовать ThreadContext здесь?