有什么方法可以访问公共交通传奇中已发布事件的 headers?

There is any way to access headers of published event in masstransit saga?

当我发布这样的事件时,有什么方法可以访问 saga 中的 headers 吗?

 await busControl.Publish<IOrderCreated>(new
        {
            OrderId = dto.Id
        }, context =>
        {
            context.Headers.Set(LogConstansts.Common.OperationId,Guid.Parse(values.Single()).ToString());
            context.Headers.Set(LogConstansts.QueueMessageHeaderNames.Publisher, Request.RequestUri.AbsoluteUri);
        });

然后进入传奇

Initially(
           When(OrderCreated)
            .Then(context =>
                  {
                    //get headers somehow?
                     context.Instance.OrderId = context.Data.OrderId; 
                  })

是的,您可以通过从行为上下文中获取消费上下文负载来访问它:

Initially(
    When(OrderCreated)
        .Then(context =>
        {
            ConsumeContext<IOrderCreated> c;
            if (context.TryGetPayload(out c))
            {
                c.Headers.Get<string>("myheader");
                // do something
            }
            context.Instance.OrderId = context.Data.OrderId; 
        })