c# - 如何通过 MSMQ(使用 WCF)发送 XDocument?

标签 c# .net wcf serialization msmq

我有一个 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);
}

最佳答案

XDocument 是 XML 数据的便捷包装器。无需序列化 XDocument,只需将 XML 数据作为字符串发送即可,使用 XDocument.ToString()

关于c# - 如何通过 MSMQ(使用 WCF)发送 XDocument?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3265212/

相关文章:

c# - List.Add vs HashSet.Add 用于 c# 中的小型集合

c# - 具有 HTTPS 端点的无状态 Web API 服务引发健康状态错误

c# - 为什么要使用像 Exit Game 的 Photon 这样的服务器?

.net - SendKeys.Send 和 Windows 键

.net - 哪种类型的 key .NET 程序集用于签名以及如何创建它?

android - Xamarin Android - 使用复杂参数(对象)发出 Rest 请求会引发异常,在 .NET 中它工作正常(使用 channel 工厂)

c# - 使用带有版本开关的 Get/Set 来定义属性的最有效方法是什么?

.net - 用于屏幕阅读的OCR引擎

c# - 为什么我的 Azure WCF 服务从未从“忙碌”状态变为“就绪”状态?

.net - 为客户端和服务器共享 WCF 契约(Contract)