2016-11-09 12 views
0

У меня есть следующий интерфейс и класс для моего веб-сервиса WCF, но у меня проблема с отправкой 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> 

И когда я поставил точку останова на методе я вижу, что х и у параметров как 0.

weirdness

Я попытался разместить несколько различных версий моего JSON, но все проходят через нули. Как ни странно, если я удалю свойства «x» и «y» из отправленного JSON (например, {"Test":{}}), это фактически не ошибка, но, очевидно, параметры все еще ноль, не уверены, если это связано хотя :)

+0

вы используете 'WebMessageBodyStyle.Wrapped', но ваш servicecontract не видит каких-либо признаков. –

ответ

0

Благодаря Амит Кумар Гхош Я выработал ответ, если кто-то есть эта проблема, причина моего JSON не работает, потому что я отправлял:

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

Но на самом деле я должен был отправить это :

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

сочетание благодарность Амит Кумар Гхош и Конрада 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

 Смежные вопросы

  • Нет связанных вопросов^_^