私のMSMQがリモートマシン上にあります。 次のように私のコードは、あるMSMQ OnReceiveCompletedメソッド - Queue.BodyがInvaliOperationExceptionをスローする
private void OnReceiveCompleted(object sender, ReceiveCompletedEventArgs e)
{
System.Messaging.Message msg = _queue.EndReceive(e.AsyncResult);
FireReceiveEvent(msg.Body); // Here msg.Body throws exception
_queue.BeginReceive();
}
は、私は、Windowsのサービスとして、これを実行しているよ、わからないことは違います。しかし、msg.BodyはInvaliOperationExceptionをスローします。
実際には、msgのプロパティのほとんどが例外をスローしています。何か案が?あなたがメッセージキュー
private void MessageQueueReceiveCompleted(Object source, ReceiveCompletedEventArgs asyncReceive)
{
try
{
//Get a handle to the Message Queue
MessageQueue messageQueue = (MessageQueue)source;
Message message = messageQueue.EndReceive(asyncReceive.AsyncResult);
if (message != null)
{
ProcessMsmqMessage(message.Body);
}
}
catch (Exception e)
{
Exception err = new Exception(String.Format("Error in QueueListener: {0}. Detail: {1}", queueName, e.Message), e);
OnListeningError(err);
}
finally{
messageQueue.BeginReceive();
}
}
動作しませんでした。唯一の違いは、あなたがソースから取得しているのに対し、私の_queueはクラスメンバーです。 – zorrinn