加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 获取WCF消息的正文

发布时间:2020-12-15 03:52:51 所属栏目:百科 来源:网络整理
导读:我有一个麻烦,应该是一个简单的问题. 我有一个服务方法,它接收一个c#消息类型,我想要提取该soap消息的正文,并使用它来构造一个全新的消息.我不能在Message类中使用GetBody()方法,因为我不知道什么类型的序列化身体. 有没有人知道如何从消息中提取身体?或者
我有一个麻烦,应该是一个简单的问题.

我有一个服务方法,它接收一个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();
    }
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读