Nservicebus Web API CurrentMessageContext Null

Nservicebus Web API CurrentMessageContext Null,nservicebus,Nservicebus,我在api控制器中有以下方法 [System.Web.Mvc.HttpPost] public Task<CommandResponse> Send(CommandBase command) { var result = new TaskCompletionSource<CommandResponse>(); this.Bus.Send(command).Register<int>(response => {

我在api控制器中有以下方法

[System.Web.Mvc.HttpPost]
public Task<CommandResponse> Send(CommandBase command)
{
    var result = new TaskCompletionSource<CommandResponse>();

    this.Bus.Send(command).Register<int>(response =>
         {
          this.Bus.CurrentMessageContext is here null <-------
          result.TrySetResult(commandResponse);
         });
    return result.Task;
 }
[System.Web.Mvc.HttpPost]
公共任务发送(CommandBase命令)
{
var result=new TaskCompletionSource();
this.Bus.Send(命令).Register(响应=>
{

this.Bus.CurrentMessageContext在此为null与AsyncPagesMVC3示例中一样,您必须显式调用安装函数,请参阅Global.asax.cs中应用程序启动()方法的最后一行:

 protected void Application_Start()
    {
        AreaRegistration.RegisterAllAreas();

        RegisterGlobalFilters(GlobalFilters.Filters);
        RegisterRoutes(RouteTable.Routes);

        // NServiceBus configuration
        Configure.WithWeb()
            .DefaultBuilder()
            .ForMvc()
            .JsonSerializer()
            .Log4Net()
            .MsmqTransport()
                .IsTransactional(false)
                .PurgeOnStartup(true)
            .UnicastBus()
                .ImpersonateSender(false)
            .CreateBus()
            .Start(() => Configure.Instance.ForInstallationOn<NServiceBus.Installation.Environments.Windows>().Install());
    }
受保护的无效应用程序\u Start()
{
RegisterAllAreas();
RegisterGlobalFilters(GlobalFilters.Filters);
注册地址(RouteTable.Routes);
//N服务总线配置
Configure.WithWeb()
.DefaultBuilder()
.ForMvc()
.JsonSerializer()
.Log4Net()
.MsmqTransport()
.IsTransactional(错误)
.PurgeOnStartup(正确)
.UnicastBus()
.ImpersonateSender(错误)
.CreateBus()
.Start(()=>Configure.Instance.ForInstallationOn().Install());
}

回调正在另一个线程中启动,因为
总线。CurrentMessageContext
使用
ThreadStatic
属性,如果从其他线程访问,则该值为null。

您试图在消息上下文中访问的是什么?发送响应之前设置的头如果不使用任务会发生什么?callback按预期执行。安装方法没有帮助。我想访问回调中的this.Bus.CurrentMessageContext.Headers。我认为问题与线程有关。工作线程与回调线程不同,但我不确定。我遇到了此类问题,得出了与回调线程相同的结论你。你有什么建议来解决这个问题吗?我只能考虑删除所有的异步内容,或者等待NSB 6。