【问题标题】:Adding HTTP request header to WCF request将 HTTP 请求标头添加到 WCF 请求
【发布时间】:2012-12-01 03:17:34
【问题描述】:

我有一个由 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请求头而不是消息头,

谢谢!

【问题讨论】:

    标签: c# ajax http http-headers httprequest


    【解决方案1】:

    最简单的方法是通过以下方式使用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

    【讨论】:

    • 感谢这对您有很大帮助。看起来很有希望。
    【解决方案2】:

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

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

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

    【讨论】:

    • 我可以用更简洁的方式来做这件事吗?这样我就不必输入网址了?因为我已经有包含所有方法的服务参考
    • 您将 Web 服务直接添加到您的项目 c#。 VS 会自动为您生成类以直接调用您的 Web 服务,但它可能不会在调用 Web 服务时提供添加请求标头的选项。
    猜你喜欢
    • 2017-02-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多