问题
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!
回答1:
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
回答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
来源:https://stackoverflow.com/questions/13856362/adding-http-request-header-to-wcf-request