我在 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>
有任何想法吗?任何帮助将不胜感激。
最佳答案
NServiceBus 将 return null if a bus has already been created 。因此,请确定是否有人已经在为您实例化总线。
在我的场景中,我们不一致地定义端点配置。在一个过程中,我们将实现 IConfigureThisEndpoint
,然后显式配置和实例化总线。在另一个过程中,我们将从 AsA_Publisher
继承,它隐式地为你创建一个总线;当需要为这个其他进程明确定义我们的总线配置时,我们将在流畅的 NullReferenceException
方法上抛出 CreateBus
。删除 AsA_Publisher
继承解决了这个问题。
希望这可以帮助!
关于msmq - NServiceBus "CreateBus()"返回 null,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9073725/