1
MSMQ에서 메시지를 가져올 때 어떤 결과를 얻었습니다. 메시지가 손상된 것처럼 보입니다. 객체에 다시 구문 분석하려고하면 xml 예외가 생깁니다.MSMQ 메시지를 개체로 구문 분석 할 수 없습니다.
여기 내가하려는 일이 있습니다.
내가 사용하고 영수증 객체가
MessageQueue queue = new MessageQueue(ConfigurationManager.AppSettings["receiptQueue"]);
{
queue.Formatter = new XmlMessageFormatter(new[] { typeof(Receipt) });
Message msg = new Message();
Receipt obj = new Receipt();
obj.AlertId = alertId;
obj.UserName = userName;
obj.Version = version;
obj.PC = pcName;
msg.Body = obj;
queue.Send(msg);
}
내가 노력하고있어 Windows 서비스에서이
public class Receipt
{
public Receipt()
{
}
public int AlertId { get; set; }
public int Version { get; set; }
public string UserName { get; set; }
public string PC { get; set; }
}
과 같은 코드를 사용하여 웹 서비스에서 MSMQ에 쓰고 있어요 대기열에서 객체를 가져옵니다.
초기화 큐
MessageQueue receiptQueue = new MessageQueue(ConfigurationManager.AppSettings["receiptQueue"]);
receiptQueue.Formatter = new XmlMessageFormatter(new[] { typeof(Receipt) });
receiptQueue.ReceiveCompleted += new ReceiveCompletedEventHandler(ReceiptReceiver);
receiptQueue.BeginReceive();
메시지
private void ReceiptReceiver(object source, ReceiveCompletedEventArgs asyncResult)
{
Receipt receptObj = new Receipt();
MessageQueue mq = (MessageQueue)source;
Message mes =mq.EndReceive(asyncResult.AsyncResult);
try
{
receptObj = (Receipt)mes.Body; //error happens here
//Do logic
}
}
catch (Exception ex)
{
// ex handeling
}
mq.BeginReceive();
}
내가 mq.EndReceive 후 메시지에 대한 다음과 같은 정보가
그런 다음 위치를 잡아 간다받을
를 처리 예외는 "Root element is missing"입니다.이것은 대기열의 메시지입니다. 모양이 꽤 잘 보인다.
<?xml version="1.0"?>
<Receipt xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<AlertId>500</AlertId>
<Version>2</Version>
<UserName>jk9c</UserName>
<PC>aasudv211</PC>
</Receipt>
내가 잘못하고있는 것에 대한 제안 사항이 있으십니까?
/비르
MSMQ의 메시지는 무엇입니까? 손에 마사지를 받았다면 MSMQ의 직렬화 또는 비 직렬화가 잘못되었는지 알 수 없습니다. – klashar
대기열에서 메시지를 추가했습니다. 서식이 잘 보입니다. – Birger