0

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

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

前端:

  1. 我在 Session 中有数据D1
  2. 我将 CommandX 发送到 NServiceBus >> MutateOutgoing [从 Session 中获取数据D1并将其插入 TransportMerssage 标头H1 ] >> 消息被发送到总线

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

前端: 6. 我在 NServiceBus >> MutateIncomming 中得到 CommandX “响应” [我在后端的标头H2中有数据D2,我希望将这些数据注入 Session 以便我可以在 MVC 前端使用它-结束,但我不能,因为 HttpContext.Current 是null ]

任何想法,为什么我可以从 MutateOutgoing 而不是从 MutateIncomming 访问 Session?任何解决方法?

谢谢!马丁

4

1 回答 1

2

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

想一想——当您处理 NServiceBus 消息时,您希望 HTTP 上下文是什么?

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

于 2013-06-14T22:43:39.377 回答