我在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>
有什么想法吗?任何帮助将不胜感激。
答案 0 :(得分:0)
NServiceBus将return null if a bus has already been created。因此,确定某人是否已经为您实例化公交车。
在我的场景中,我们不一致地定义端点配置。在一个过程中,我们将实现IConfigureThisEndpoint
,然后显式配置和实例化总线。在另一个过程中,我们将从AsA_Publisher
继承,隐式为您创建一个总线;当我们明确定义这个其他过程的总线配置时,我们会在流畅的NullReferenceException
方法上抛出CreateBus
。删除AsA_Publisher
继承解决了问题。
希望这有帮助!