Я импортировал файл WSDL (проверяется нормально с помощью SoapUI), и большинство функций работают должным образом.
Проблема, с которой я столкнулся, связана с несколькими операциями, которые имеют один и тот же тип ввода какТип вывода.
Пример
<operation name="FindID">
<documentation>Get ID For search</documentation>
<input message="tns:StringIO"/>
<output message="tns:StringIO"/>
</operation>
Где сообщение StringIO определяется как
<message name="StringIO">
<part name="StringIO" type="xs:string" />
</message>
В пользовательском интерфейсе SOAP функции FindID работают должным образом на страницах PHP, которые используютэта функция работает должным образом.
в Visual Studio, когда я пытаюсь вызвать функцию, она должна называться
string MyResults = WebInterface.FindID(SearchString);
, поскольку FindID должен возвращать строку, но вместо этогоКажется, Visual Studio хочет импортировать его как
void FindID(ref string SearchString)
, а не
string FindID(string SearchString)
Теперь я нашел решение (работает, но я не верю, что это "правильный" способ сделатьit) Если я создаю новое сообщение
<message name="SecondOutput">
<part name="SecondOutput" type="xs:string" />
</message>
и изменяю функцию WSDL на
<operation name="FindID">
<documentation>Get ID For search</documentation>
<input message="tns:StringIO"/>
<output message="tns:SecondOutput"/>
</operation>
, тогда Visual Studio & SoapUI и страницы PHP все довольны и ведут себя нормально.
Так почему я не могу получить мое входное сообщение и выходное сообщение как тон же типа ???