在我的情况下,我有一个如下的网络服务,
[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”传递,它的效果很好。
实际问题在哪里,请帮我找出....
答案 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);