Используя 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 здесь?

0 ответов

Другие вопросы по тегам