У меня есть заказ в виде XDocument, и я просто хочу вставить его в тело сообщения и отправить в очередь MSMQ. Я уже эффективно сериализовал объект заказа, и теперь я просто хочу отправить его. Возможно ли это?
Я использую WCF здесь, но я доволен простым старым решением для msmq. Я получаю сообщение об ошибке, указывающее, что XDocument не может быть сериализован ... очевидно, я не могу этого сделать, но как мне вставить мой XDocument в тело сообщения? Нужно ли накатывать свой собственный сериализатор?
public void SendOrder(XDocument order)
{
var address = new EndpointAddress(@"msmq.formatname:DIRECT=OS:myServer\private$\myQueue");
var binding = new MsmqIntegrationBinding();
binding.Security.Mode = MsmqIntegrationSecurityMode.None;
binding.ExactlyOnce = false;
binding.Durable = false;
var channelFactory = new ChannelFactory<IOrderSubmitter>(binding, address);
var channel = channelFactory.CreateChannel();
var message = new MsmqMessage<XDocument>(order);
message.Label = "Really Big Order with lots of profit";
message.BodyType = (int)System.Runtime.InteropServices.VarEnum.VT_ARRAY;
using (var scope = new TransactionScope(TransactionScopeOption.Required))
{
channel.SubmitOrder(message);
scope.Complete();
}
}
[ServiceContractAttribute(Namespace = "http://my.namespace.com", Name = "Hello")]
public interface IOrderSubmitter
{
[OperationContract(IsOneWay = true)]
void SubmitOrder(MsmqMessage<XDocument> message);
}