1

NServiceBusnoobはこちら。ローカルキューにメッセージを送信する単純なWinformsアプリを作成しました。ローカルで動作します。ローカルで実行すると、キューにテストメッセージが表示されます。例外はスローされません。

しかし、同じサンプルアプリを別のADドメインのマシンで実行すると、次の例外がスローされます。

ここに画像の説明を入力してください

これがコードです。

public partial class Form1 : Form
{
    private IBus bus;

    public Form1()
    {
        InitializeComponent();
        bus = Configure.With()
            .UnityBuilder()
            .XmlSerializer()
            .MsmqTransport()
            .UnicastBus()
            .ImpersonateSender(true)
            .SendOnly();
    }

    private void button1_Click(object sender, EventArgs e)
    {
        try
        {
            bus.Send("girish@my-pc-name.domain.net", new TestMessage() { OrderId = "99" });
            label1.Text = "Message sent successfully!";
        }
        catch (Exception ex)
        {
            label1.Text = ex.ToString();
            //throw;
        }
    }
}

[Serializable]
public class TestMessage : IMessage
{
    public string OrderId { get; set; }
}

文字列配列をメッセージとして渡すことにしましたが、「System.Stringはシリアライザーに登録されていませんでした...」と表示されます。

だから私はそれが問題なのはTestMessageタイプではないことを知っています。

私が間違っていることについて何か考えはありますか?

4

2 に答える 2

1

ファイアウォールの問題でした。ポート1801がブロックされました。これを理解するには、インフラストラクチャおよびネットワークサポートチームと協力する必要がありました。

ご協力いただきありがとうございます。

于 2013-03-14T05:03:57.630 に答える
0

表示されているエラーは、NServiceBusが適切なアセンブリを見つけられないという事実を示しています。メッセージが含まれているアセンブリ。IMessageを使用しているため、文字列で何をしているのかわかりません。NServiceBus 2.xを使用していますか?

それに加えて、コードではなく、構成で送信先のキューを指定することをお勧めします。ドキュメントから

<UnicastBusConfig>
  <MessageEndpointMappings>
    <add Messages="MessageDLL" Endpoint="DestinationQueue@TargetMachine"/>
  </MessageEndpointMappings>
</UnicastBusConfig>

正確に何をしているのかわかりませんが、あるADドメインから別のドメインに送信していませんか?ドメイン間に信頼関係があるので、ドメインAのMSMQからドメインBのMSMQにメッセージを送信できますか?

于 2013-03-13T20:31:40.660 に答える