Click here to Skip to main content
65,938 articles
CodeProject is changing. Read more.
Articles / Languages / C#

How to add headers in a WF service client and how to get Headers value in WF service

5.00/5 (1 vote)
10 Apr 2012CPOL 22.8K  
Add headers in WF service client and get headers value in WF service.

For adding headers in a client application, add a service reference in the client application.

And write the following code for adding headers:

C#
using (WFServiceRef.ServiceClientproxy = new WFServiceRef.ServiceClient())
{
    using (newSystem.ServiceModel.OperationContextScope(proxy.InnerChannel))
    {
        MessageHeader<string> mess = newMessageHeader<string>(
          System.Security.Principal.WindowsIdentity.GetCurrent().Name);
        //Assigning Name and NameSpace to the message header value at client side
        System.ServiceModel.Channels.MessageHeader header = mess.GetUntypedHeader("UserID", "ns");
        //Adding message header with OperationContext which will be received at the server side
        OperationContext.Current.OutgoingMessageHeaders.Add(header);
        varx = proxy.GetData(2);
        Response.Write(x);
    }
}

And in the WF service, we will create a class and call the function of the class in the WF service using InvokeMethod.

And the class will look like this:

C#
using System.Web;
using System.ServiceModel;
using System.ServiceModel.Channels;
namespace WFSERVICE
{
    public class TestClass
    {
        public void SomeMethod()
        {
            EndpointAddress clientAddress = OperationContext.Current.Channel.RemoteAddress;
            MessageHeaders headers = OperationContext.Current.RequestContext.RequestMessage.Headers;
            var userID = OperationContext.Current.IncomingMessageHeaders.GetHeader<string>("UserID","ns");
        }
    }
}

And the workflow will look like this:

License

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