微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

c# – 获取WCF消息的正文

我有一个麻烦,应该是一个简单的问题.

我有一个服务方法,它接收一个c#消息类型,我想要提取该soap消息的正文,并使用它来构造一个全新的消息.我不能在Message类中使用GetBody<>()方法,因为我不知道什么类型的序列化身体.

有没有人知道如何从消息中提取身体?或者构造一个具有相同主体的新消息,即没有原始消息头等?

解决方法

不要抢占Yann的答案,但是值得的是,这里是一个将消息体复制到具有不同动作头的新消息中的完整示例.您可以添加自定义其他标题作为示例的一部分.我花了太多时间写这个,把它丢掉. =)
class Program
{
    [DataContract]
    public class Person
    {
        [DataMember]
        public string FirstName { get; set; }

        [DataMember]
        public string LastName { get; set; }

        public override string ToString()
        {
            return string.Format("{0},{1}",LastName,FirstName);
        }
    }

    static void Main(string[] args)
    {
        var person = new Person { FirstName = "Joe",LastName = "Schmo" };
        var message = System.ServiceModel.Channels.Message.CreateMessage(MessageVersion.Default,"action",person);

        var reader = message.GetReaderAtBodyContents();
        var newMessage = System.ServiceModel.Channels.Message.CreateMessage(MessageVersion.Default,"newAction",reader);

        Console.WriteLine(message);
        Console.WriteLine();
        Console.WriteLine(newMessage);
        Console.WriteLine();
        Console.WriteLine(newMessage.GetBody<Person>());
        Console.ReadLine();
    }
}

原文地址:https://www.jb51.cc/csharp/93533.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐