使用 nServiceBus 和 AzureDataBus 时出现空引用错误

本文关键字:引用 错误 nServiceBus AzureDataBus 使用 | 更新日期: 2023-09-27 18:19:20

Edit 这不是一个重复的问题,我问的是第三方组件中的空引用异常。

我有一个数据总线配置为:

var config = new BusConfiguration();
config.AssembliesToScan(typeof(XXXXX).Assembly);
config.UseContainer<NinjectBuilder>((c)=>c.ExistingKernel(this.Kernel));
config.UsePersistence<RavenDBPersistence>();
config.UseTransport<MsmqTransport>();
config.UseSerialization<XmlSerializer>();
config.EnableInstallers();

var databus=config.UseDataBus<AzureDataBus>();
databus.ConnectionString(ConfigurationManager.
    ConnectionStrings["DataBus"].ConnectionString);

config.Conventions().
        DefiningDataBusPropertiesAs(p => p.Name == "Data" && p.PropertyType == typeof(Byte[]));

    var bus = NServiceBus.Bus.CreateSendOnly(config);

我有一个消息类为:

public class FileDeliveryMessage : ICommand
{
    public Byte[] Data { get; set; }
    public Guid WorkId { get; set; }
    public int ReportId { get; set; }
    public int Extension { get; set; }
    public int FileType { get; set; }
}

每当我发送消息时,我都会收到空引用错误。此错误发生在未与处理程序一起发送时

System.NullReferenceException:对象引用未设置为实例 的对象。 在 NServiceBus.DataBusSendBehavior.Invoke(OutgoingContext context, Action 下一页( 在 C:''BuildAgent''work''3206e2123f54fce4''src''NServiceBus.Core''DataBus''DataBusSendBehavior.cs:line 51 at NServiceBus.BehaviorChain 1.InvokeNext(T context) in C:'BuildAgent'work'3206e2123f54fce4'src'NServiceBus.Core'Pipeline'BehaviorChain.cs:line 107 at NServiceBus.BehaviorChain 1.<>c__DisplayClass4_0.b__0(( in C:''BuildAgent''work''3206e2123f54fce4''src''NServiceBus.Core''Pipeline''BehaviorChain.cs:line 95 在 NServiceBus.PopulateAutoCorrelationHeadersForRepliesBehavior.Invoke(OutgoingContext 上下文,下一步操作(在 C:''BuildAgent''work''3206e2123f54fce4''src''NServiceBus.Core''Sagas''PopulateAutoCorrelationHeadersForRepliesBehavior.cs:line 47 at NServiceBus.BehaviorChain 1.InvokeNext(T context) in C:'BuildAgent'work'3206e2123f54fce4'src'NServiceBus.Core'Pipeline'BehaviorChain.cs:line 107 at NServiceBus.BehaviorChain 1.<>c__DisplayClass4_0.b__0(( in C:''BuildAgent''work''3206e2123f54fce4''src''NServiceBus.Core''Pipeline''BehaviorChain.cs:line 95 at NServiceBus.BehaviorChain 1.InvokeNext(T context) in C:'BuildAgent'work'3206e2123f54fce4'src'NServiceBus.Core'Pipeline'BehaviorChain.cs:line 107 at NServiceBus.BehaviorChain 1.<>c__DisplayClass4_0.b__0(( in C:''BuildAgent''work''3206e2123f54fce4''src''NServiceBus.Core''Pipeline''BehaviorChain.cs:line 95 at NServiceBus.BehaviorChain 1.InvokeNext(T context) in C:'BuildAgent'work'3206e2123f54fce4'src'NServiceBus.Core'Pipeline'BehaviorChain.cs:line 107 at NServiceBus.BehaviorChain 1.Invoke(( in C:''BuildAgent''work''3206e2123f54fce4''src''NServiceBus.Core''Pipeline''BehaviorChain.cs:line 52 在 NServiceBus.Pipeline.PipelineExecutor.Execute[T](BehaviorChain'1 管道操作,T 上下文(在 C:''BuildAgent''work''3206e2123f54fce4''src''NServiceBus.Core''Pipeline''PipelineExecutor.cs:line 129 在 NServiceBus.Pipeline.PipelineExecutor.InvokeSendPipeline(DeliveryOptions 传递选项,逻辑消息消息(在 C:''BuildAgent''work''3206e2123f54fce4''src''NServiceBus.Core''Pipeline''PipelineExecutor.cs:line 116 at NServiceBus.Unicast.UnicastBus.SendMessage(SendOptions 发送选项,逻辑消息消息(在 C:''BuildAgent''work''3206e2123f54fce4''src''NServiceBus.Core''Unicast''UnicastBus.cs:line 610

使用 nServiceBus 和 AzureDataBus 时出现空引用错误

发生这种情况是因为,我只包含要扫描的自己的程序集:

配置。AssembliesToScan(typeof(XXXXX(.组装(;

更改为:

        IIncludesBuilder includesBuilder = AllAssemblies
                                            .Matching("NServiceBus")
                                            .And("XXXX.XXX");

        config.AssembliesToScan(includesBuilder);