Wcf方法奇怪的行为

时间:2014-03-13 22:59:02

标签: c# wcf

我已经构建了一个WCF服务,我正在使用Android客户端。我有这个方法:

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

它完美无缺。然后我需要向Method发送另一个参数,我按照这样编辑它:

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

当我尝试我不断收到错误时,我想来到之前的工作版本,但现在它不会工作!?我删除了所有更改但似乎服务器以某种方式记住它们并且我一直收到405错误,“不允许使用HTTP动词来访问此页面”。有人帮忙吗?

1 个答案:

答案 0 :(得分: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);

一切正常。