2014-03-13 97 views
0

我已經構建了一個WCF服務,我正在使用Android客戶端。我有這種方法:Wcf方法奇怪的行爲

[WebInvoke(
     Method = "POST", 
     UriTemplate = "syncfromserver/", 
     BodyStyle = WebMessageBodyStyle.Bare, 
     ResponseFormat = WebMessageFormat.Json, 
     RequestFormat = WebMessageFormat.Json)] 
    Message SyncFromServer(LocalDatabaseModel tc); 

它是完美的工作。然後,我需要另一個參數發送到方法和我編輯這樣說:

[WebInvoke(
     Method = "POST", 
     UriTemplate = "syncfromserver/token={token}", 
     BodyStyle = WebMessageBodyStyle.Bare, 
     ResponseFormat = WebMessageFormat.Json, 
     RequestFormat = WebMessageFormat.Json)] 
    Message SyncFromServer(string token, LocalDatabaseModel tc); 

當我嘗試我一直得到錯誤,所以我想來以前的工作版本,但現在它不會工作!?我刪除了所有更改,但似乎服務器以某種方式記住它們,並且我一直收到405錯誤,「不允許使用用於訪問此頁面的HTTP動詞」。有人幫忙嗎?

+0

我會說!你以後的版本應該可以工作嘗試交換參數,即Message SyncFromServer(LocalDatabaseModel tc,string token);看到這個答案http://stackoverflow.com/questions/21912454/write-a-webservice-method-with-both-uri-and-datacontract-class-parameters/21953119#21953119 –

回答

0

我已讓數據合同類是這樣解決了這個:

[DataContract] 
public class CombinedObject{ 
     [DataMember(Name="token")] 
     public string token {get; set; }  
     [DataMember(Name="model")] 
     public LocalDatabaseModel model {get; set; }  

} 

和客戶端上的同一個班級,尊重合同。之後,WCF的方法是:

[WebInvoke(
    Method = "POST", 
    UriTemplate = "syncfromserver/", 
    BodyStyle = WebMessageBodyStyle.Bare, 
    ResponseFormat = WebMessageFormat.Json, 
    RequestFormat = WebMessageFormat.Json)] 
    Message SyncFromServer(CombinedObject tc); 

和一切工作。