我有一个问题,HttpContext.Current使用NServiceBus解耦前端(MVC)和后端(Azure WorkerRole)为NULL。 我正在使用IMutateTransportMessages来拦截传出和传入的TransportMessages。我在Session(MVC前端)中有一些数据,需要使用Mutators自动将它附加到传出的TransportMessages。类比我需要从传入的TransportMessages中将一些数据注入Session。
为了更好地理解,让我们看看我的简化场景:
Fron-end:
后端: 3.我收到包含数据 D1 的标题 H1 的CommandX 我做了一些事情 5.我将数据 D2 添加到消息头 H2 中,并将CommanX返回给NServiceBus
前端: 6.我在NServiceBus中获得CommandX“响应”>> MutateIncomming [我在后端的头文件 H2 中有数据 D2 ,我希望将这些数据注入Session,这样我就可以在MVC前端使用它了但是我不能,因为HttpContext.Current是 null ]
任何想法,为什么我可以从MutateOutgoing而不是MutateIncomming访问Session?任何解决方法?
谢谢! 马丁
答案 0 :(得分:2)
MutateIncoming将在NServiceBus工作线程上调用,而不是在ASP.NET工作线程上调用 - 因此没有HTTP上下文。
想一想 - 当您处理NServiceBus消息时,您希望HTTP上下文是什么?
如果您需要用户会话中的某些内容,您可能需要传递某种会话ID或相关ID,以便在处理回复消息时将数据保留在正确的位置