1

私は 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();
            }
        }
4

1 に答える 1

1

UnsupportedFormatNameOperationの説明は、

指定された形式名に対して要求された操作はサポートされていません。

要求された操作が指定された形式名でサポートされていない場合、メッセージ キューはこのエラーを返します。操作には、直接形式名を指定してキューを開いてメッセージを受信しようとする操作が含まれます。

したがって、問題は受信コードにあると思います。

于 2013-02-23T23:50:44.203 に答える