1

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;
 }

CurrentMessageContext がここで null である理由を考えてください。私はリクエスト/レスポンスの例に従っています。ここでの唯一の違いは、Task を使用した非同期パターンです。

ありがとう、マリンコ

4

2 に答える 2

0

AsyncPagesMVC3サンプルと同様に、Install関数を明示的に呼び出す必要があります。Global.asax.csのApplication_Start()メソッドの最後の行を参照してください。

 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());
    }
于 2013-02-10T14:14:46.120 に答える