我为我的WCF Web服务设置了以下接口和类,但是当我向其发布JSON时出现问题,发布XML工作正常。
[ServiceContract]
public interface IWebService {
[OperationContract]
[WebInvoke(Method = "POST", ResponseFormat = WebMessageFormat.Xml, BodyStyle = WebMessageBodyStyle.Wrapped, UriTemplate = "xml/post")]
[return: MessageParameter(Name = "data")]
int Test(int x, int y);
}
public class WebService : IWebService {
public int Test(int x, int y) {
return x + y;
}
}
如果我发布此XML:
<Test xmlns="http://tempuri.org/"><x>10</x><y>10</y></Test>
我得到了这个回应(如预期的那样):
<TestResponse xmlns="http://tempuri.org/"><data>20</data></TestResponse>
但是如果我发布这个JSON:
{"Test":{"x":10,"y":10}}
我收到了这个回复:
<TestResponse xmlns="http://tempuri.org/"><data>0</data></TestResponse>
当我在方法上设置断点时,我看到x和y参数都是0。
我已尝试发布我的JSON的几个不同版本,但所有版本都是零。奇怪的是,如果我删除&#39; x&#39;并且&#39; y&#39;来自我发送的JSON的属性(例如{"Test":{}}
),它实际上并没有错误,但显然参数仍然为零,不确定这是否相关虽然:)
答案 0 :(得分:1)
对于此请求样本 -
result = {1: "first"};
服务联系人应该看起来像 -
{"Test":{"x":10,"y":10}}
其中 -
public int Test(Model Test) {
return test.x + test.y;
}
答案 1 :(得分:0)
感谢Amit Kumar Ghosh,我找到了答案,如果其他人有这个问题,我JSON没有工作的原因是因为我发帖:
{"Test":{"x":10,"y":10}}
但实际上我应该发布这个:
{"x":10,"y":10}
感谢来自this问题的Amit Kumar Ghosh和Konrad Kokosa。