Get Just the Body of a WCf Message

前端 未结 2 2014
悲哀的现实
悲哀的现实 2020-12-19 04:00

I\'m having a bit of trouble with what should be a simple problem.

I have a service method that takes in a c# Message type and i want to just extract the body of tha

相关标签:
2条回答
  • 2020-12-19 04:23

    Not to preempt Yann's answer, but for what it's worth, here's a full example of copying a message body into a new message with a different action header. You could add or customize other headers as a part of the example as well. I spent too much time writing this up to just throw it away. =)

    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();
        }
    }
    
    0 讨论(0)
  • 2020-12-19 04:36

    You can access the body of the message by using the GetReaderAtBodyContents method on the Message:

    using (XmlDictionaryReader reader = message.GetReaderAtBodyContents())
    {
         string content = reader.ReadOuterXml();
         //Other stuff here...                
    }
    
    0 讨论(0)
提交回复
热议问题