Click here to Skip to main content
Rate this: bad
good
Please Sign up or sign in to vote.
See more: C# WCF
I added a message contract class like below
[MessageContract]
    public class Credential
    {
        private string key = String.Empty;
        private string val = String.Empty;
 
        [MessageBodyMember(
          Name = "test",
          Namespace = "http://www.examples.com"
        )]
        public string Key
        {
            get { return key; }
            set { this.key = value; }
        }
 
        [MessageHeader(
          Name = "testval",
          Namespace = "http://www.examples.com"
        )]
        public string Val
        {
            get { return val; }
            set { this.val = value; }
        }
    }
Added a Service contract like below
[ServiceContract]
    public interface IService1
    {
 
        [OperationContract]
        Hashtable GetHeader();
 
        Credential obj
        {
            [OperationContract]
            get;
            [OperationContract]
            set;
        }
        // TODO: Add your service operations here
    }
Now in the WCF service i am implementing the property
public class Service1 : IService1
    {
        private Credential _obj;
        public Credential obj
        {
            get { return _obj; }
            set { _obj = value; }
        }
 
        public Hashtable GetHeader()
        {
            Hashtable ht = new Hashtable();
            foreach (MessageHeaderInfo h in OperationContext.Current.IncomingMessageHeaders)
            {
                ht.Add(h.Name, h.ToString());
            }
            return ht;
        }
    }
Now in the client i am trying to set the message contract object like below.
localhost.Service1 obj = new localhost.Service1();
            localhost.Credential objCredential = new localhost.Credential();
            objCredential.test = "test";
            obj.set_obj(objCredential);
            obj.GetHeader();
But the soap header never seems to have the value i assigned to " objCredential.test".Why is it so?
Posted 22-Mar-13 1:34am
Edited 22-Mar-13 2:55am
v3

1 solution

Rate this: bad
good
Please Sign up or sign in to vote.

Solution 1

Hi Buddy,
You r using property as operation contract that's why do r not getting values in soap.
Creating property as operation contract is not advicible.
Use property as Datamember as explained in below link
http://stackoverflow.com/questions/556775/wcf-datamember-attribute-on-property-vs-member[^]
 
Please refer wcf tutorial on below link (Note: Open link in Internet Explorer)
http://wcftutorial.net/Data-Contract.aspx[^]
  Permalink  

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

  Print Answers RSS
0 Mathew Soji 334
1 Maciej Los 295
2 BillWoodruff 290
3 Afzaal Ahmad Zeeshan 257
4 DamithSL 225
0 OriginalGriff 6,369
1 Sergey Alexandrovich Kryukov 5,973
2 DamithSL 5,183
3 Manas Bhardwaj 4,673
4 Maciej Los 4,045


Advertise | Privacy | Mobile
Web03 | 2.8.1411019.1 | Last Updated 22 Mar 2013
Copyright © CodeProject, 1999-2014
All Rights Reserved. Terms of Service
Layout: fixed | fluid

CodeProject, 503-250 Ferrand Drive Toronto Ontario, M3C 3G8 Canada +1 416-849-8900 x 100