Методы с обнуляемыми типами, не работающие в веб-службе ASMX, использующей GET - PullRequest
6 голосов
/ 14 марта 2011

У меня есть веб-служба ASMX, настроенная для использования метода HTTP GET. Простые методы, которые принимают базовые параметры String и Int, работают нормально, и я могу вызвать MyService.asmx/MethodName?Param=Value и получить ответ обратно в XML.

Однако, когда у меня есть метод, который имеет обнуляемое значение Int (т.е. int?), я получаю эту ошибку:

<Имя метода> Имя метода веб-службы недопустимо.

Сообщение об ошибке сбивает с толку, так как метод существует, просто не в области GET. Я предполагаю, что это потому, что обнуляемый тип слишком сложен, чтобы его можно было передать через URL, но я не могу найти какую-либо документацию или сообщения SO по этому вопросу.

Я ценю, что сложные типы, такие как списки или пользовательские классы и т. Д., Не будут работать с использованием GET, но я бы предположил, что простое значение типа null int или nullable datetime можно обрабатывать изначально, просто обнаруживая, было ли оно пропущено в URL. Думаю, это не так просто!

Любой совет или обходные пути будут с благодарностью.

Спасибо, Тим

Ответы [ 2 ]

1 голос
/ 14 марта 2011

nullable int не слишком сложно. должно выдать

  <s:element minOccurs="1" maxOccurs="1" name="Param" nillable="true" type="s:int" /> 

в WSDL. Проверьте этот пост . Ошибка может быть для чего-то еще, возможно?

0 голосов
/ 24 марта 2017

Вы должны использовать текст JSON, если у вас есть такой int? аргумент, потому что это тип объекта, а не примитивный тип. Ошибка вводит в заблуждение, потому что служба существует.

если у тебя есть int? В качестве параметра a вы должны отправить "{'a': null}" как контент на сервер или какое-то целое число вместо нуля.

...