0

バスのインスタンスを構成しようとすると、次のエラーが発生します。

エンドポイント名を生成できませんでした。Configure.DefineEndpointName(...) を使用して独自の規則を指定してください。

うーん、エンドポイント メッセージのマッピングについてバスに伝える必要があります。私は通常、これを指定するために app.config を使用します。これは、WPF アプリの受け入れに問題なく機能します (私は WPF の専門家ではありません)。

私のWPFアプリ内でapp.configが読み取られていないか、何かが間違っているようです...私のスタートアップコードは次のようになります(winformまたはコンソールアプリで正常に動作します)

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

助言がありますか...

最終的には、メッセージからエンドポイントへのマッピングを一元的に保存して、すべてのデスクトップ アプリが起動時にこれを読み取れるようにしたいと考えています。すべてのクライアントがアクセスできる中央 DB。この方法でバスを構成する方法の例をいただければ幸いです。

4

2 に答える 2

3

Just to add to the accepted answer above: the order in which you call the methods is important. In my case I couldn't get DefineEndpointName() to work unless it was directly after 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();
于 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 に答える