c# – 获取WCF消息的正文

前端之家收集整理的这篇文章主要介绍了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();
    }
}

猜你在找的C#相关文章