Клиент веб-сервиса C#: несколько методов веб-сервиса с тем же (сложным) типом возврата?

Нет, вышеупомянутый макрос нельзя преобразовать в функцию ceil in-kernel, так как в ядре такой функции нет. Хотя, если внимательно посмотреть вышеупомянутый макрос, то есть

#define CEIL(a, b)     (((a) + (b-1)) / (b))

Вышеприведенная функция является альтернативой для функции DIV_ROUND_UP в ядре. Таким образом, можно опустить макрос в ядре и использовать функцию DIV_ROUND_UP в функции вызова.

Это верно, если a и b оба являются целыми числами.

7
задан John Saunders 20 April 2015 в 18:43
поделиться

5 ответов

таким образом, я могу только предположить, что.NET (или по крайней мере wsdl.exe) не позволяет Вам использовать веб-сервис, который возвращает сложные (пользовательские) типы того же типа через несколько методов... правильно?

Это неправильно. Вообразите, сколько из боли, которая была бы, если бы это было верно - у Вас мог бы только когда-либо быть один метод, который возвращает Строку, та, которая возвращает Двойное, то, которое возвращает SomeObject, и т.д...., это был бы кошмар.

Я не очень знаком с веб-сервисами в.NET, но от ошибок Вы добираетесь, она кажется, что у Вас есть проблемы с пространствами имен XML - возможно, существует коллизия имени. Я попытался бы следовать за предложением в сообщении об ошибке, изменить WebMethodAttribute.

Также, кроме того, если Вы не можете отправить часть кода/документа, связанного с проблемой, Вы имеете из-за некоторых проблем конфиденциальности/чувствительности компании, необходимо отправить санированную версию, которая все еще доказывает тестовый сценарий. Почти что-либо "чувствительное" должно смочь быть сведенным к намного большему количеству более простого отрывка кода, который все еще убедительно излагает свою точку зрения, не предавая чувствительности.

0
ответ дан 6 December 2019 в 21:20
поделиться

Очень странно. Обычно WSDL обеспечил бы общий тип, и при компиляции через wsdl.exe или svcutil.exe Вы заставите общий, общий тип использовать через любое количество методов в том же интерфейсе.

Были проблемы при ссылке на несколько независимый WSDL в том же приложении, та доля, якобы идентичный тип, который приводит к двум отличным CLR, вводит быть сгенерированным. Существуют пути вокруг этой проблемы - она довольно хорошо известна. Затем существует несколько связанная проблема отображения существующего бизнес-объекта к типу, сгенерированному от WSDL. Другая ранее исследуемая среда.

Но Вы говорите о чем-то другом.

0
ответ дан 6 December 2019 в 21:20
поделиться

Я просто искал «ссылки на метод и тип» и нашел отчет об ошибке подключения » System.InvalidOperationException: элемент XML * из пространства имен * ссылается на ссылку на метод и тип ». В этом случае есть операция и элемент с одним и тем же именем (локальное имя и пространство имен).


It ' Стоит отметить часть ответа Microsoft:

Мы больше не вносим усовершенствования в ASMX; мы продолжаем поддерживать его существующую функциональность, но по возможности рекомендуем использовать WCF.

3
ответ дан 6 December 2019 в 21:20
поделиться

Использование WSDL.exe имеет переключатель / sharetypes . Это должно решить эту проблему.

Более того, я бы не согласился, что это дело Microsoft, поскольку одни и те же классы представлены как разные сложные типы, находящиеся в нескольких wsdl. Это не очень хорошая абстрактная конструкция.

Готовая справочная документация Microsoft для общих типов Включает функцию обмена типами. Эта функция создает один файл кода с определением одного типа для идентичных типов, совместно используемых разными службами (пространство имен, имя и подпись провода должны быть идентичными). Ссылайтесь на сервисы с http: // URL-адресами в качестве параметров командной строки или создайте дисковый документ для локальных файлов.

0
ответ дан 6 December 2019 в 21:20
поделиться

Я столкнулся с аналогичной проблемой, и вот что я обнаружил:

Я определил сложный тип для возврата в качестве ответа:

public class FooResponse {...}

[WebMethod]
public FooResponse Foo() {...}

Обратите внимание, что здесь точное сочетание имен Foo / Foo + Response важен. Когда я изменил имя метода следующим образом, проблема исчезла:

public class FooResponse {...}

[WebMethod]
public FooResponse Fooxxx() {...}

Я считаю, что происходит то, что .NET пытается автоматически обернуть ответ, исходящий от метода Foo, элементом с именем FooResponse. Использование того же имени в качестве объекта, который вы хотите вернуть, создает двусмысленность. Попробуйте изменить имя вашего объекта ответа или имя вашего метода, чтобы избежать этой коллизии.

8
ответ дан 6 December 2019 в 21:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: