向WCF请求添加HTTP请求头

11

我有一个被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#的等效方法?我该如何发送HTTP请求头,以便我的WCF服务器也可以使用它?

我需要将参数添加到HTTP请求头中,而不是消息头中。

谢谢!

2个回答

27

最简单的方法是使用以下方式中的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();
}

来自于这篇文章


1
谢谢,这很有帮助。看起来很有前途。 - Shane van Wyk

-2
创建一个类型为HttpWebRequest的新WebRequest对象。设置头并获取响应。
WebRequest req = HttpWebRequest.Create("myURL") as HttpWebRequest;
req.Headers.Add("AdminGUID", "value");
HttpWebResponse response = (HttpWebResponse)request.GetResponse();

如果想要更深入地了解WebRequest的示例,请查看页面


我能以更简洁的方式做这件事吗?因为我已经有包含所有方法的服务引用,所以我不必再输入URL了。 - Dor Cohen
您可以直接在C#项目中添加Web服务。VS会自动生成用于调用Web服务的类,但可能无法提供在调用Web服务时添加请求头的选项。 - Ali Khalid

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接