0

Edit This is not a duplicate question I am asking about a null reference exception in a third party component.

I have a databus configured as:

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

I have a message class as:

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

Whenever I send a message I get a null reference error. This error occurs on the send not with the handlers

System.NullReferenceException: Object reference not set to an instance of an object. at NServiceBus.DataBusSendBehavior.Invoke(OutgoingContext context, Action next) in C:\BuildAgent\work\3206e2123f54fce4\src\NServiceBus.Core\DataBus\DataBusSendBehavior.cs:line 51 at NServiceBus.BehaviorChain1.InvokeNext(T context) in C:\BuildAgent\work\3206e2123f54fce4\src\NServiceBus.Core\Pipeline\BehaviorChain.cs:line 107 at NServiceBus.BehaviorChain1.<>c__DisplayClass4_0.b__0() in C:\BuildAgent\work\3206e2123f54fce4\src\NServiceBus.Core\Pipeline\BehaviorChain.cs:line 95 at NServiceBus.PopulateAutoCorrelationHeadersForRepliesBehavior.Invoke(OutgoingContext context, Action next) in C:\BuildAgent\work\3206e2123f54fce4\src\NServiceBus.Core\Sagas\PopulateAutoCorrelationHeadersForRepliesBehavior.cs:line 47 at NServiceBus.BehaviorChain1.InvokeNext(T context) in C:\BuildAgent\work\3206e2123f54fce4\src\NServiceBus.Core\Pipeline\BehaviorChain.cs:line 107 at NServiceBus.BehaviorChain1.<>c__DisplayClass4_0.b__0() in C:\BuildAgent\work\3206e2123f54fce4\src\NServiceBus.Core\Pipeline\BehaviorChain.cs:line 95 at NServiceBus.BehaviorChain1.InvokeNext(T context) in C:\BuildAgent\work\3206e2123f54fce4\src\NServiceBus.Core\Pipeline\BehaviorChain.cs:line 107 at NServiceBus.BehaviorChain1.<>c__DisplayClass4_0.b__0() in C:\BuildAgent\work\3206e2123f54fce4\src\NServiceBus.Core\Pipeline\BehaviorChain.cs:line 95 at NServiceBus.BehaviorChain1.InvokeNext(T context) in C:\BuildAgent\work\3206e2123f54fce4\src\NServiceBus.Core\Pipeline\BehaviorChain.cs:line 107 at NServiceBus.BehaviorChain1.Invoke() in C:\BuildAgent\work\3206e2123f54fce4\src\NServiceBus.Core\Pipeline\BehaviorChain.cs:line 52 at NServiceBus.Pipeline.PipelineExecutor.Execute[T](BehaviorChain`1 pipelineAction, T context) in C:\BuildAgent\work\3206e2123f54fce4\src\NServiceBus.Core\Pipeline\PipelineExecutor.cs:line 129 at NServiceBus.Pipeline.PipelineExecutor.InvokeSendPipeline(DeliveryOptions deliveryOptions, LogicalMessage message) in C:\BuildAgent\work\3206e2123f54fce4\src\NServiceBus.Core\Pipeline\PipelineExecutor.cs:line 116 at NServiceBus.Unicast.UnicastBus.SendMessage(SendOptions sendOptions, LogicalMessage message) in C:\BuildAgent\work\3206e2123f54fce4\src\NServiceBus.Core\Unicast\UnicastBus.cs:line 610

JoshBerke
  • 62,464
  • 23
  • 120
  • 162
  • This is not a duplicate, thanks! If it is link me to the answer and I will honor your google-fu skills as being superior to mine – JoshBerke Oct 26 '15 at 14:23

1 Answers1

0

This was occuring because, I was only including my own assemblies to be scanned:

config.AssembliesToScan(typeof(XXXXX).Assembly);

Changes to:

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


        config.AssembliesToScan(includesBuilder);
JoshBerke
  • 62,464
  • 23
  • 120
  • 162
  • I would suggest to change your strategy on assembly scanning and use exclusion list rather than inclusion list. Inclusion list is much more difficult to get right and it's fragile. When adding new things, it needs to be constantly updated. With exclusion list you only list things you know for sure need to be excluded, so additions are not forcing you to review that list each time. In addition to that, inclusion API will be deprecated in the future because of this problematic behaviour, so you could already start migrating. – Sean Feldman Oct 27 '15 at 17:45
  • Here's documentation: http://docs.particular.net/nservicebus/hosting/assembly-scanning – Sean Feldman Oct 27 '15 at 17:46