HttpContext.Current is NULL in NServiceBus MessageMutator

本文关键字:NServiceBus MessageMutator in NULL Current is HttpContext | 更新日期: 2023-09-27 18:18:37

我有一个问题与HttpContext。使用NServiceBus解耦前端(MVC)和后端(Azure WorkerRole),当前为NULL。我使用IMutateTransportMessages来拦截传出和传入的TransportMessages。我在会话(MVC前端)中有一些数据,需要使用Mutators自动将其附加到传出的TransportMessages。类似地,我需要从传入的TransportMessages中注入一些数据到会话中。

为了更好地理解,让我们看一下我的简化场景:

Fron-end:

  1. 我有数据D1在会话
  2. 我发送CommandX到NServiceBus>> MutateOutgoing[从会话中获取数据D1并插入它的transportmessage header H1]>>消息被发送到总线

后端:3.我收到标题H1包含数据D1的CommandX4. 我做了一些事情5. 我将数据D2添加到消息头H2并将CommanX返回给NServiceBus

前端:6. 我得到CommandX"响应"在NServiceBus>> mutateincoming[我有数据D2在头部H2从后端,我希望注入这个数据到会话,所以我可以在MVC前端使用它,但我不能,因为HttpContext。当前为null]

任何想法,为什么我可以从MutateOutgoing而不是从mutateincoming访问会话?有解决方法吗?

谢谢!马丁

HttpContext.Current is NULL in NServiceBus MessageMutator

MutateIncoming将在NServiceBus工作线程中调用,而不是在ASP中调用。. NET工作线程——因此没有HTTP上下文。

想想看——当你处理一个NServiceBus消息时,你期望HTTP上下文是什么?

如果您需要用户会话中的某些内容,则可能需要传递某种会话ID或相关ID,以便在处理回复消息时将数据保留在正确的位置。