Click here to Skip to main content
15,902,198 members
Home / Discussions / WPF
   

WPF

 
GeneralRe: Multi player game over internet using WPF/Silverlight. Pin
Ray Cassick1-Feb-10 10:52
Ray Cassick1-Feb-10 10:52 
GeneralRe: Multi player game over internet using WPF/Silverlight. Pin
mittalpa1-Feb-10 12:27
mittalpa1-Feb-10 12:27 
GeneralRe: Multi player game over internet using WPF/Silverlight. Pin
Ray Cassick1-Feb-10 14:13
Ray Cassick1-Feb-10 14:13 
Questionhow to get selected item of listbox Pin
Jagz W28-Jan-10 23:57
professionalJagz W28-Jan-10 23:57 
AnswerRe: how to get selected item of listbox Pin
Abhinav S29-Jan-10 3:25
Abhinav S29-Jan-10 3:25 
GeneralRe: how to get selected item of listbox Pin
Jagz W29-Jan-10 23:57
professionalJagz W29-Jan-10 23:57 
GeneralRe: how to get selected item of listbox Pin
Abhinav S3-Feb-10 21:12
Abhinav S3-Feb-10 21:12 
QuestionWCF Custom MessageHeader Pin
koleraba28-Jan-10 23:56
koleraba28-Jan-10 23:56 
Hi
I am triing to send some aditional info from wcf client to server using custom MessageHeader.
Below is the class which should be sent inside message header.

public class UserCredentialsHeaderContent
{
    public string UserName { get; set; }
    public string Password { get; set; }

    public UserCredentialsHeaderContent(string userName, string password)
    {
        UserName = userName;
        Password = password;
    }

    public UserCredentialsHeaderContent()
    {

    }
}

And the custom MessageHeader:

public class UserCredentialsMessageHeader : MessageHeader
    {
        private const string HEADER_NAME = "UserToken";
        private const string HEADER_NAMESPACE = "NameSpace";

        public UserCredentialsHeaderContent UserCredentials { get; private set; }

        public override string Name
        {
            get { return HEADER_NAME; }
        }

        public override string Namespace
        {
            get { return HEADER_NAMESPACE; }
        }

        public UserCredentialsMessageHeader()
        {

        }

        public UserCredentialsMessageHeader(UserCredentialsHeaderContent userCredentials)
        {
            UserCredentials = userCredentials;
        }

        protected override void OnWriteHeaderContents(XmlDictionaryWriter writer, MessageVersion messageVersion)
        {
            XmlSerializer serializer = new XmlSerializer(typeof(UserCredentialsHeaderContent));
            StringWriter stringWriter = new StringWriter();
            serializer.Serialize(stringWriter, UserCredentials);
            stringWriter.Close();

            string text = stringWriter.ToString();
            writer.WriteElementString(HEADER_NAME, HEADER_NAMESPACE, text);
        }

        public static UserCredentialsHeaderContent ReadHeader(Message request)
        {
            int headerIndex = request.Headers.FindHeader(HEADER_NAME, HEADER_NAMESPACE);
            if (headerIndex != -1)
            {
                XmlNode[] contentNode = request.Headers.GetHeader<XmlNode[]>(headerIndex);
                string text = contentNode[0].InnerText;

                XmlSerializer deSerializer = new XmlSerializer(typeof(UserCredentialsHeaderContent));
                StringReader stringReader = new StringReader(text);
                UserCredentialsHeaderContent content = (UserCredentialsHeaderContent)  deSerializer.Deserialize(stringReader);
                stringReader.Close();

                return content;
            }
            else
            {
                return null;
            }
        }
    }


I am adding Header to outgoing message headers in the class that implements IClientMessageInspector:
public class ClientMessageInspector :  IClientMessageInspector
    {

        #region IClientMessageInspectorImplementation
        public object BeforeSendRequest(ref Message request, IClientChannel channel)
        {

            UserCredentialsMessageHeader msgHeader = new UserCredentialsMessageHeader(
                new UserCredentialsHeaderContent("UserName", "Password"));
            request.Headers.Add(msgHeader);
            return null;
        }

        public void AfterReceiveReply(ref Message reply, object correlationState)
        {

        }
    }


So far everything works OK. The problem presents it's self on the server side. I am triing to read the custom header like
public class TestService : ITestService
    {
        public string SendMessage(string message)
        {

            UserCredentialsHeaderContent content =
                OperationContext.Current.IncomingMessageHeaders.GetHeader<UserCredentialsHeaderContent>("UserToken", "NameSpace");
            return "Hello " + message;
        }
    }


In the upper method I get the UserCredentialsHeaderContent from the call to GetHeader. But all Properties of the UserCredentialsHeaderContent are null. I guess the class does not get deserialized properly, but I don't know how to solve this. Any idea will pe appreciated
AnswerRe: WCF Custom MessageHeader Pin
ProtoBytes29-Jan-10 4:01
ProtoBytes29-Jan-10 4:01 
GeneralRe: WCF Custom MessageHeader Pin
Mark Salsbery29-Jan-10 13:00
Mark Salsbery29-Jan-10 13:00 
GeneralRe: WCF Custom MessageHeader Pin
ProtoBytes29-Jan-10 14:06
ProtoBytes29-Jan-10 14:06 
GeneralRe: WCF Custom MessageHeader Pin
DaveyM6929-Jan-10 13:48
professionalDaveyM6929-Jan-10 13:48 
GeneralRe: WCF Custom MessageHeader Pin
ProtoBytes29-Jan-10 14:05
ProtoBytes29-Jan-10 14:05 
GeneralRe: WCF Custom MessageHeader Pin
DaveyM6929-Jan-10 23:57
professionalDaveyM6929-Jan-10 23:57 
AnswerRe: WCF Custom MessageHeader Pin
hb5213421429-Jan-10 4:23
hb5213421429-Jan-10 4:23 
GeneralRe: WCF Custom MessageHeader Pin
koleraba1-Feb-10 1:55
koleraba1-Feb-10 1:55 
QuestionRe: WCF Custom MessageHeader Pin
Mark Salsbery29-Jan-10 15:23
Mark Salsbery29-Jan-10 15:23 
AnswerRe: WCF Custom MessageHeader Pin
koleraba1-Feb-10 1:53
koleraba1-Feb-10 1:53 
GeneralRe: WCF Custom MessageHeader Pin
Mark Salsbery1-Feb-10 7:48
Mark Salsbery1-Feb-10 7:48 
GeneralRe: WCF Custom MessageHeader Pin
koleraba1-Feb-10 9:30
koleraba1-Feb-10 9:30 
QuestionListViewItem background Pin
hb5213421428-Jan-10 9:07
hb5213421428-Jan-10 9:07 
AnswerRe: ListViewItem background Pin
ProtoBytes29-Jan-10 3:58
ProtoBytes29-Jan-10 3:58 
QuestionHow to know DataGrid sorting changed (any Event)? Pin
Frank W. Wu28-Jan-10 3:43
Frank W. Wu28-Jan-10 3:43 
AnswerRe: How to know DataGrid sorting changed (any Event)? Pin
Covean28-Jan-10 4:52
Covean28-Jan-10 4:52 
GeneralRe: How to know DataGrid sorting changed (any Event)? Pin
Frank W. Wu28-Jan-10 5:42
Frank W. Wu28-Jan-10 5:42 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.