WCF SOAP和REST结合在一起

时间:2014-02-17 13:15:01

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

假设我有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的用户名和密码。 现在我想对REST服务使用此方法“GetData”。 (我也有第二个webHttbinding)。我想为REST客户端使用此方法“GetData”,现在我发现我可以使用WebGet和Webinvoke属性

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

我的问题是如何使用One Method“GetData”来支持REST和SOAP服务以及用户名和密码。

1 个答案:

答案 0 :(得分:0)

创建HttpRequest时,您可以添加任何您想要的标题集合:

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

并且在Service实现中,您可以通过调用此属性WebOperationContext.Current.IncomingRequest.Headers

轻松访问标头集合