0

尝试配置总线实例时出现以下错误。

无法生成端点名称,请使用 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(); 

有什么建议么...

最终,我希望将消息发送到集中存储的端点映射,以便所有桌面应用程序都可以在启动时读取它,即。所有客户端都可以访问的中央数据库。如何以这种方式配置总线的示例将不胜感激。

4

2 回答 2

3

只是添加到上面接受的答案:调用方法的顺序很重要。就我而言,除非直接在 Configure.With() 之后,否则我无法让 DefineEndpointName() 工作

      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();
于 2012-05-24T09:00:35.667 回答
1

根据错误,只需将其添加到您的初始化中:

  Bus = Configure.With()
        .AutofacBuilder(container)
        .DefineEndpointName("ENDPOINTNAME")
        .XmlSerializer()
        .MsmqTransport().IsTransactional(true).PurgeOnStartup(false)
        .UnicastBus().ImpersonateSender(false).LoadMessageHandlers()
        .CreateBus()
        .Start();

这也将成为您的输入队列名称。

于 2012-05-08T12:37:05.537 回答