将HTTP请求标头添加到WCF请求

时间:2012-12-13 09:06:13

标签: c# ajax http http-headers httprequest

我有一个由AJAX和C#应用程序消耗的WCF服务,
我需要通过HTTP请求标头发送参数。

在我的AJAX上,我添加了以下内容并且有效:

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

在WCF服务器端,我执行以下操作来获取标题:

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

什么是C#等价物? 如何发送也将由我的WCF服务器使用的http请求标头?

我需要将参数添加到HTTP请求标头而不是消息标题

谢谢!

2 个答案:

答案 0 :(得分:23)

最简单的方法是以下列方式使用WebOperationContext

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();
}

取自post

答案 1 :(得分:-2)

创建一个类型为HttpWebRequest的新WebRequest对象。设置标题并获得响应。

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

有关webrequest的更深入示例,请参阅此page