2014-02-17 45 views
1

可以说我有WCF SOAP服务,我使用这个库SOAP头WCF SOAP和REST一起

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 
    } 

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

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

我quietion是如何?我可以使用方法“的GetData”为REST和SOAP服务和用户名和密码。?

+0

可能重复访问头集合[REST/SOAP端点WCF服务](http://stackoverflow.com/questions/186631/rest-soap-endpoints-for-a-wcf-service) –

+0

但我想如何传递用户名和密码REST方法..没有通过它的方法。 – beka

+0

你应该问一个单独的问题。当我读到它时,你的问题是:我如何使用一种方法“GetData”来处理REST和SOAP服务*这是一个重复的问题。关于*和用户名和密码*的内容没有得到很好的解释,需要进一步的工作才能得到很好的答案。 –

回答

0

当你创建一个HTTPRequest,你可以添加任何你想做的标题集合:

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

,并在服务的实现,你可以轻松地通过调用这个属性WebOperationContext.Current.IncomingRequest.Headers