WCF方法没有错误但没有收到我的JSON

时间:2016-11-09 11:30:51

标签: c# asp.net json wcf .net-4.6.1

我为我的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。

weirdness

我已尝试发布我的JSON的几个不同版本,但所有版本都是零。奇怪的是,如果我删除&#39; x&#39;并且&#39; y&#39;来自我发送的JSON的属性(例如{"Test":{}}),它实际上并没有错误,但显然参数仍然为零,不确定这是否相关虽然:)

2 个答案:

答案 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。