У меня есть приложение, с несколькими арендаторами.Я хочу создать фоновую работу в контексте пользователя, но не могу найти хороший способ реализовать это.Я объясню немного мою архитектуру.Я использую интерфейс ICurrentUser, который содержит идентификатор пользователя.В классе запуска я регистрирую в качестве области видимости в IoC класс WebUser, который реализует ICurrentUser, этот класс получает HttpContext и извлекает сведения о пользователе из утверждений.
Я выполняю фоновое задание, а ICurrentUser.UserID является нулевым, как и ожидалось, поскольку зависаниене имеет httpcontext.
Я решаю эту проблему, создавая свои фоновые задачи с помощью метода, который принимает ICurrentUser в качестве первого аргумента, затем внутри тела метода, я устанавливаю свой «CurrentUser» для UnitOfWork (и AppServices) и начинаю выполнение задачи, проблемаПри таком подходе мне приходится повторять этот код для каждой фоновой задачи и передавать в него CurrentUser.
Мой вопрос, как можно добиться следующего.Или, может быть, вы можете предложить другие решения для этого.
- Как передать свой CurrentUser в JobActivator, чтобы заказать настройку пользовательского контекста до разрешения всех служб.
Например, это может выглядеть так:
BackgroundJob.Enqueue<MySvc>(UserContext, mysvc=>mysvc.Run());
Я читал источники и действительно не нашел точек расширения для реализации этого.
Любая помощь очень ценится.