2016-02-04 3 views
0

У меня есть веб-api, который отправляет команды конечным точкам. Я создал сообщение мутатором, который добавляет настраиваемый заголовок с сериализованным экземпляром IAuthenticationInformation.Зарегистрировать экземпляр в конструкторе из поведения NServiceBus

Что мне нужно делать в принимающих конечных точках, это перехват этого заголовка (предположительно в Поведении), десериализуйте его в IAuthenticationInformation и зарегистрируйте его в дочернем контейнере, который будет строить обработчики для его возврата по запросу.

У меня есть все, чтобы зарегистрировать экземпляр в контейнере. Проблема заключается в том, что context.Builder не предоставляет никакой операции Регистрации. Как я могу это достичь?

Примечания:

  1. Я использую v6 (я нашел способ сделать это в v5 с использованием PipelineExecutor, но это, кажется, не работает больше).
  2. Я использую Unity, но я бы предпочел контейнерное независимое решение
  3. Эта проблема кажется мне очень распространенной, поскольку мне это нужно для нескольких других сценариев (т.е. регистрации единицы работы с данным db соединение), поэтому я не понимаю, почему так сложно найти решение. Должен ли я искать другой подход?

ответ

0

Что вы делаете, это вариант образца Appending username using headers.

Добавьте UnityContainer в качестве зависимости конструктора в IncomingMessageBehavior.

Это даст вам дочерний контейнер для регистрации вашего экземпляра.

+0

Это, кажется, хороший ответ на мой вопрос (хотя и не независимый от контейнера), поэтому я отмечаю его как ответ, но я не буду следовать этому подходу, потому что у меня есть другое предложение: зарегистрируйте зависимости со временем жизни блок работы и в вызове поведения Инициализируйте на них передачу данных из заголовка. Это лучший подход в этом случае, потому что мы не создаем зависимости от того, когда nsb создает экземпляры зависимостей, а также контейнера. Вы можете прочитать полный разговор здесь: https://groups.google.com/d/msg/particularsoftware/AprrsD3G7gM/Tkoh-SVOEQAJ –