WCF RESTful服务不接受JSON输入

时间:2013-01-24 04:55:35

标签: c# .net wcf rest fiddler

在我的情况下,我有一个如下的网络服务,

    [OperationContract]
    [WebInvoke(UriTemplate = "services/CreatePerson", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json, Method = "POST")]
    string CreatePerson(string data);

它期待JSON输入。我正在通过将JSON字符串作为Request body传递给Fiddler测试此服务,如下所示

"{"personName":"Joe", "source":"I", "address":"KK Road"}"

和请求标题为

User-Agent: Fiddler
Content-Type: application/json;charset=utf-8
Host: localhost
Content-Length: 54

调试时没有达到服务方法断点。

同时它为以下JSON工作如下(用单引号代替双引号json),

"{'personName':'102',  'source':'I',  'address':'KK Road'}"

服务方法不接受JSON字符串输入,因为如果我将输入作为“test”传递,它的效果很好。

实际问题在哪里,请帮我找出....

1 个答案:

答案 0 :(得分:1)

我认为你不应该使用初始和尾随引号!

尝试:

{'personName':'102',  'source':'I',  'address':'KK Road'}

此外,您的方法不应该使用字符串参数,而应该使用符合json的类。

 public class M
 {
     public string personName { get; set; }
     public string source { get; set; }
     public string address { get; set; }
 }

 [OperationContract]
 [WebInvoke(UriTemplate = "services/CreatePerson", RequestFormat = WebMessageFormat.Json, 
    ResponseFormat = WebMessageFormat.Json, Method = "POST")]
 string CreatePerson(M data);