【问题标题】:WCF SOAP and REST togetherWCF SOAP 和 REST 一起使用
【发布时间】:2014-03-16 19:23:31
【问题描述】:

假设我有 WCF Soap 服务,并且我正在使用这个库来处理 SOAP 标头

http://wcfextras.codeplex.com/

例如我的界面是这样的

  [SoapHeader("HelperHeader", typeof(HelperHeader), Direction = SoapHeaderDirection.In)]
  [OperationContract]
  string GetData(string id);

    ////////
  public string GetData(string id)
  {
      HelperHeader clientHeader=SoapHeaderHelper<HelperHeader>.GetInputHeader("HelperHeader");
     if (clientHeader != null)
         return id
  }

在 Header 类中,我有 basicHttpbinding 的用户名和密码。 现在我想将这种方法“GetData”用于 REST 服务。 (我还有第二个 webHttbinding)。我想为 REST 客户端使用这个方法“GetData”,现在我发现我可以使用属性 WebGet 和 Webinvoke

  [OperationContract]
  [WebGet(UriTemplate = "testjson/{id}",  ResponseFormat = WebMessageFormat.Json)]
  string GetData(string id);

我的问题是如何使用一种方法“GetData”同时用于 REST 和 SOAP 服务以及用户名和密码。?

【问题讨论】:

  • 但我想如何在 REST 方法中传递用户名和密码 .. 而不是在方法中传递它。
  • 您可能应该就此提出一个单独的问题。我读到的问题是我如何为 REST 和 SOAP 服务使用一种方法“GetData”,这是一个重复的问题。关于以及用户名和密码的部分没有很好地解释,需要进一步的工作才能得到好的答案。

标签: wcf soap wcf-binding wcf-security webhttpbinding


【解决方案1】:

当您创建 HttpRequest 时,您可以将任何您想要的内容添加到 headers 集合中:

WebRequest request = WebRequest.Create("<URI>");
request.Headers.Add("username", "<UserName>");
request.Headers.Add("password", "<Pass>");
request.GetResponse();

在Service实现中,你可以通过调用WebOperationContext.Current.IncomingRequest.Headers这个属性轻松访问headers集合

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-02-26
    • 1970-01-01
    • 2011-07-29
    • 2013-01-24
    • 1970-01-01
    • 2020-12-15
    • 1970-01-01
    • 2020-12-06
    相关资源
    最近更新 更多