11

I have a WCF service consume by both AJAX and C# application,
I need to send a parameter through the HTTP request header.

On my AJAX I have added the following and it works:

$.ajax({
    type: "POST",
    url: this.tenantAdminService,
    beforeSend: function (req, methodName)
    {
        req.setRequestHeader("AdminGUID", adminGuid);
    }

and on the WCF server side I do the following to Get the header:

string adminGUID = System.Web.HttpContext.Current.Request.Headers["AdminGUID"];

What is the C# equivalent? How can I send the http request header that will also be consume by my WCF server?

I need to add the parameter to HTTP request header and not to the message header,

Thanks!

2 Answers 2

27

The simplest way to this is using WebOperationContext at the following way:

Service1Client serviceClient = new Service1Client();
using (new System.ServiceModel.OperationContextScope((System.ServiceModel.IClientChannel)serviceClient.InnerChannel))
{
    System.ServiceModel.Web.WebOperationContext.Current.OutgoingRequest.Headers.Add("AdminGUID", "someGUID");
    serviceClient.GetData();
}

Taken from this post

Sign up to request clarification or add additional context in comments.

Comments

-2

Make a new WebRequest object of type HttpWebRequest. Set the header and get the response.

WebRequest req = HttpWebRequest.Create("myURL") as HttpWebRequest;
req.Headers.Add("AdminGUID", "value");
HttpWebResponse response = (HttpWebResponse)request.GetResponse();

for a more in depth example of webrequest, see this page

2 Comments

Can I do this in a neater way? so that I wont have to put URL? since I already have service reference that contains all methods
You add the web service directly to your project c#. VS will automatically generate classes for you to call your web service directly but it might not give the option to add a request header, when calling the web service.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.