Ошибка десериализации POST-запроса WCF с несколькими параметрами - PullRequest
0 голосов
/ 14 октября 2019

Я выполнил поиск до публикации этого вопроса, и ни один из ответов не помог мне

Я размещаю веб-службу WCF в IIS и успешно использую в ней GET и POST. ошибка отображается только при вызове веб-метода POST с несколькими параметрами

Пример:

**//this fails**
[OperationContract]
[WebInvoke(Method = "POST", RequestFormat = WebMessageFormat.Json, UriTemplate = "test", BodyStyle = WebMessageBodyStyle.WrappedRequest)]
String test(String p, String credential);


**//this works**
[OperationContract]
[WebInvoke(Method = "POST",UriTemplate = "test")]
String test(String p);

код, который просто возвращает строку для тестирования

Я получаю следующую ошибку:

Сервер обнаружил ошибку при обработке запроса. Сообщение об исключении: «Ошибка в десериализации тела сообщения запроса для операции« тест ». OperationFormatter не удалось десериализовать какую-либо информацию из сообщения, поскольку сообщение пустое (IsEmpty = true)

Я тестирую следующие веб-методы на POSTMAN

Переданные параметры являются случайной строкой:

p: tt

верительные грамоты: ghdhdj

1 Ответ

0 голосов
/ 15 октября 2019

WCF не поддерживает данные формы по умолчанию, мы просто передаем параметр, используя элемент Wrapper, когда используем запрос Http_Post.
Как вы упомянули, мы должны использовать приведенный ниже код для переноса нескольких параметров.

[OperationContract]
    [WebInvoke(BodyStyle =WebMessageBodyStyle.Wrapped)]
    string GetData(string value,string value2);

И затем мы можем передать параметры в формате JSON.

{"value":"ab","value2":"cd"}

Снимок экрана.
enter image description here
Не стесняйтесья знаю, если проблема все еще существует.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...