2016-11-09 15 views
0

我已經設置了以下接口和類爲我的WCF Web服務,但我有一個問題,當我張貼JSON它,發佈XML工作正常。WCF方法不示數,但不接受我的JSON

[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的,但所有經過爲零。奇怪的是,如果我從JSON刪除「X」和「Y」的屬性我送(如{"Test":{}}),它實際上並沒有錯誤,但很明顯的參數仍然爲零,不知道這是否涉及雖然:)

+0

'WebMessageBodyStyle.Wrapped'但您的ServiceContract沒有看到接受任何。 –

回答

0

由於阿米特庫馬爾戈什我摸索出了答案,如果任何人有這個問題,我的JSON是不工作的原因是因爲我張貼:

{"Test":{"x":10,"y":10}} 

但事實上我應該已經張貼本:

{"x":10,"y":10} 

感謝的組合去阿米特庫馬爾Ghosh和康拉德Kokosa從this問題。您正在使用

1

對於此示例的要求 -

{"Test":{"x":10,"y":10}} 

的服務接觸應該是這個樣子 -

public int Test(Model Test) { 
    return test.x + test.y; 
} 

哪裏 -

public class Model{ 
    public int x { get; set; } 
    public int y { get; set; } 

} 
+0

我會將其標記爲答案,因爲它幫助我理解了我的問題。我發佈了錯誤的數據,我需要發佈JSON'{「x」:10,「y」:10}' – MadSkunk