2

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

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

它期待一个 JSON 输入。当我通过将 JSON 字符串作为请求正文传递如下来使用 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 字符串输入,因为如果我将输入作为“测试”传递它会很好地工作。

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

4

1 回答 1

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);
于 2013-01-24T05:08:55.240 回答