Я пытаюсь deseriliaze сообщение json, исходящее из MSMQ, но получаю исключение при разборе.
я делаю вот так:
var transaction = new MessageQueueTransaction();
transaction.Begin();
Console.WriteLine("Listening For Message Now...");
var message = queue.Receive(transaction);
var reader = new StreamReader(message.BodyStream,Encoding.Default);
var jsonMessage = reader.ReadToEnd();
var emailMessage = JsonConvert.DeserializeObject<MessageType>(jsonMessage);
The Exception:
................
Json Parser Exception Unexpected character encountered while parsing value: S. Path '', line 0, position 0
The Message Coming from MSMQ with control characters:
.................................
я думаю, что это искушение является общим исходом, которое возникает при разборе.
Каков правильный способ получения сообщения из очереди?
Было бы неплохо получить некоторые осмысленные примеры :)
Форматировщик должен быть установлен до и после. Вот что я имею в виду:
MessageQueue mq = new MessageQueue(@".\private$\<YourQueue>");
using (MessageQueueTransaction mqt = new MessageQueueTransaction())
{
mqt.Begin();
message = new Message();
message.Formatter = new XmlMessageFormatter(new Type[] { typeof(String) });
message.Body = JsonConvert.SerializeObject(<YourJsonObject>);
mq.Send(message, mqt);
mqt.Commit();
}
Затем вы читаете сообщение следующим образом:
transaction = new MessageQueueTransaction();
using (MessageQueue mq = new MessageQueue(<YourQueue>)
{
transaction.Begin();
mq.Formatter = new XmlMessageFormatter(new Type[] { typeof(String) });
Message m = mq.Receive(100, transaction);
YourObjectType o = JsonConvert.DeserializeObject<YourObjectType>(m.Body.ToString());
}
transaction.Commit();