私は MSMQ を初めて使用しますが、キューの構成が間違っているか、プログラムによって (つまり、言葉ですか?) 原因でキューがハングアップしているのではないかと疑っています。
すべてが始まったら、メッセージを 1 つ送信できます。(つまり、そのマシンの mmc を介して) リモート マシンのキュー内のメッセージを確認できます。次にアクセスすると、UnsupportedFormatNameOperation エラーが発生します。別のメッセージを送信しようとすると、数秒前に機能した send メソッドで同じエラーが発生します。
さらにイライラするのは、私のキャッチが例外を拾っていないため、デバッガーでキューオブジェクトを調べるまで気づかず、他の場所を探していたことです (時間を無駄に読んでいます) 。
リモートでメッセージ サービスをリセットすると、キュー内のメッセージが失われ、同じエラーが発生します。再起動しても同じ結果です。
ローカル (開発マシン) で Message Service をリセットしてもエラーが発生します。再起動すると、何かがリサイクルされ、正確に 1 つのメッセージをもう一度送信できます。
さらに、開発マシンを再起動し、最初の実行でキュー オブジェクトを調べた後、最初にエラーが発生していることがわかりましたが、それでもメッセージが送信されます。
したがって、私は明らかに何か間違ったことをしていますが、何が何なのかわかりません。
ここに私の送信コードがあります:
private void SendLoginMessage(...bunch of parms)
{
//hardcoded path? yup!!
MessageQueue msmq = new MessageQueue(@"FormatName:DIRECT=OS:W2K8R2_SQL2K8R2\private$\best_simulator");
try
{
LoginStatusMessage LgnMsg = new LoginStatusMessage()
{
...assign parms to my
};
msmq.Send(LgnMsg);
}
catch (MessageQueueException msmqex)
{
MessageBox.Show(msmqex.Message);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
msmq.Close();
}
}