尝试配置总线实例时,我收到以下错误。
无法生成任何端点名称,请指定您自己的名称 使用Configure.DefineEndpointName(...)
的约定
嗯所以我需要告诉总线端点消息映射。我通常使用app.config来指定它,并且它可以正常接受我的WPF应用程序,(我不是WPF的专家)。
看来app.config没有在我的WPF应用程序中读取或出现问题... 我的启动代码看起来像这样(在winforms或控制台应用程序中工作正常)
Bus = Configure.With()
.AutofacBuilder(container)
.XmlSerializer()
.MsmqTransport().IsTransactional(true).PurgeOnStartup(false)
.UnicastBus().ImpersonateSender(false).LoadMessageHandlers()
.CreateBus()
.Start();
任何建议......
最终我希望集中存储端点映射的消息,以便所有桌面应用程序都可以在启动时读取它,即。所有客户端都可以访问的中央数据库。 如何以这种方式配置总线的一个例子将不胜感激。
答案 0 :(得分:3)
只是添加到上面接受的答案:调用方法的顺序很重要。在我的情况下,我无法使DefineEndpointName()工作,除非它直接在Configure.With()之后
Bus = Configure.With()
.DefineEndpointName("WPFSubscriber")
.DefiningEventsAs(t => t.Namespace != null && t.Namespace.StartsWith("MyMessages"))
.Log4Net()
.DefaultBuilder()
.XmlSerializer()
.MsmqTransport()
.IsTransactional(true)
.PurgeOnStartup(false)
.UnicastBus().
ImpersonateSender(false)
.LoadMessageHandlers()
.CreateBus()
.Start();
答案 1 :(得分:1)
根据错误,只需将其添加到初始化中:
Bus = Configure.With()
.AutofacBuilder(container)
.DefineEndpointName("ENDPOINTNAME")
.XmlSerializer()
.MsmqTransport().IsTransactional(true).PurgeOnStartup(false)
.UnicastBus().ImpersonateSender(false).LoadMessageHandlers()
.CreateBus()
.Start();
这也将成为您的输入队列名称。