WCF RESTful 服务不接受 JSON 输入



就我而言,我有一个网络服务如下,

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

它期待 JSON 输入。 当我使用 Fiddler 测试此服务时,通过将 JSON 字符串作为请求正文传递如下,

"{"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 字符串输入,因为如果我将输入作为"测试"传递,它就会很好地工作。

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

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

尝试:

{'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);

最新更新