2013-06-14 2 views
0

У меня проблема с HttpContext.Current, являющаяся NULL, с использованием интерфейса NServiceBus для развязки (MVC) и внешнего (Azure WorkerRole). Я использую IMutateTransportMessages для перехвата исходящих и входящих сообщений TransportMessages. У меня есть некоторые данные в сеансе (внешний интерфейс MVC) и вам необходимо автоматически добавлять его к исходящим сообщениям TransportMessages с помощью Mutators. Аналогично мне нужно ввести некоторые данные из входящих сообщений TransportMessages в сеанс.HttpContext.Current является NULL в NServiceBus MessageMutator

Для лучшего понимания давайте взглянем на моем упрощенном сценарии:

Фрон-конец:

  1. У меня есть данные D1 в сессии
  2. Я посылаю CommandX в NServiceBus >> MutateOutgoing [принять данные D1 сформировать сеанс и вставить его заголовок TransportMerssage H1] >> сообщение отправляется на автобус

Back-конец: 3. Я получаю CommandX с заголовком H1, содержащие данные D1 4. Я некоторые вещи 5. добавить данные D2 в заголовок сообщения H2 и возврат CommanX к NServiceBus

Фронтальный: 6. Я получаю CommandX «ответ» в NServiceBus >> MutateIncomming [у меня есть данные D2 в заголовке H2 с фоновым, и я хочу, чтобы ввести эти данные в сессии, так что я могу использовать его в MVC переднем конце, но я не могу, так как HttpContext.Current является нулевой]

Любые идеи, почему Я могу получить доступ к сеансу из MutateOutgoing, а не из MutateIncomming? Любые обходные пути?

Спасибо! Martin

ответ

2

MutateIncoming будет вызван в рабочий поток NServiceBus, а не на рабочий поток ASP.NET, следовательно, не будет контекста HTTP.

Подумайте об этом - что вы ожидаете от контекста HTTP, когда будете обрабатывать сообщение NServiceBus?

Если вам нужно что-то из сеанса пользователя, вам, вероятно, потребуется передать какой-либо идентификатор сеанса или идентификатор корреляции, позволяющий оставлять данные в нужном месте, когда обрабатывается ответное сообщение.

+0

Да, вы правы, спасибо. Ответ на форум сообщества NServiceBus: http://tech.groups.yahoo.com/group/nservicebus/message/19451 – Heko

Смежные вопросы