Ich habe einige stange Ergebnis beim Versuch, Nachrichten von einem MSMQ erhalten - es sieht aus wie die Nachricht ist beschädigt. Ich erhalte nur XML-Ausnahmen, wenn ich versuche, es zu einem Objekt zurück zu analysieren.MSMQ-Nachricht kann nicht analysiert werden, um Objekt
Hier ist, was ich versuche zu tun.
Ich bin von einem Webservice zu einem MSMQ Schreiben mit diesem Code
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);
}
Die Quittung Objekt ich benutze ist wie dies Ich versuche
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; }
}
In einem Windows-Dienst sieht um das Objekt aus der Warteschlange zu bekommen.
Init Warteschlange
MessageQueue receiptQueue = new MessageQueue(ConfigurationManager.AppSettings["receiptQueue"]);
receiptQueue.Formatter = new XmlMessageFormatter(new[] { typeof(Receipt) });
receiptQueue.ReceiveCompleted += new ReceiveCompletedEventHandler(ReceiptReceiver);
receiptQueue.BeginReceive();
die Nachricht Griff
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();
}
ich die folgenden Informationen für die Nachricht nach mq.EndReceive erhalten
Es geht dann zu fangen, wo die Ausnahme ist "Root-Element fehlt"
Dies ist eine Nachricht aus der Warteschlange. Es sieht ziemlich gut formatiert aus.
<?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>
Irgendwelche Vorschläge zu was ich falsch mache?
/Birger
Was ist die Nachricht in Ihrem MSMQ? Wenn Sie eine Massage auf der Hand haben, würden Sie nicht falsch Serialisierung oder Deserialisierung Ihrer MSMQ. – klashar
Ich habe eine Nachricht aus der Warteschlange hinzugefügt .. Es sieht gut formatiert aus – Birger