У меня есть следующий интерфейс и класс для моего веб-сервиса 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.
Я попытался разместить несколько различных версий моего JSON, но все проходят через нули. Как ни странно, если я удалю свойства «x» и «y» из отправленного JSON (например, {"Test":{}}
), это фактически не ошибка, но, очевидно, параметры все еще ноль, не уверены, если это связано хотя :)
вы используете 'WebMessageBodyStyle.Wrapped', но ваш servicecontract не видит каких-либо признаков. –