NServiceBus“CreateBus()”返回null

时间:2012-01-31 02:43:20

标签: msmq nservicebus

我在Windows Server 2003 32位上使用NServiceBus 2.6.0.1504。

生成的日志文件表明所有内容都已连线,但由于某种原因,“CreateBus()”返回null。忽略我的调试代码:)

        SetLoggingLibrary.Log4Net(log4net.Config.XmlConfigurator.Configure);

        var one = Configure.With(typeFinder.GetAssemblies());
        var two = one.DefaultBuilder();
        var three = two.MsmqSubscriptionStorage();
        var four = three.XmlSerializer();
        var five = four.MsmqTransport();
        var six = five.IsTransactional(false);
        var seven = six.PurgeOnStartup(true);
        var eight = seven.UnicastBus();
        var nine = eight.LoadMessageHandlers();
        var ten = nine.ImpersonateSender(false);
        var eleven = ten.CreateBus();
        if (eleven == null)
            throw new Exception("createbus");
        var twelve = eleven.Start();

消息“createbus”的异常总是被抛出。

这适用于我的开发箱,是Windows Server 2008 R2 64位。

这是我对网络应用的配置。

  <MsmqSubscriptionStorageConfig Queue="MedXChangeSubcriptions" />
  <MsmqTransportConfig InputQueue="MedXChangeForms" ErrorQueue="error" NumberOfWorkerThreads="1" MaxRetries="5" />
  <UnicastBusConfig>
    <MessageEndpointMappings>
      <add Messages="MethodFactory.MedXChange.Library" Endpoint="MedXChangeWeb" />
    </MessageEndpointMappings>
  </UnicastBusConfig>

有什么想法吗?任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

NServiceBus将return null if a bus has already been created。因此,确定某人是否已经为您实例化公交车。

在我的场景中,我们不一致地定义端点配置。在一个过程中,我们将实现IConfigureThisEndpoint,然后显式配置和实例化总线。在另一个过程中,我们将从AsA_Publisher继承,隐式为您创建一个总线;当我们明确定义这个其他过程的总线配置时,我们会在流畅的NullReferenceException方法上抛出CreateBus。删除AsA_Publisher继承解决了问题。

希望这有帮助!