Не удается извлечь массив строк из веб-службы

#c# #web-services

#c# #веб-службы

Вопрос:

 public ArrayList myFunc(string arg1, string arg2)
  

Я протестировал этот веб-метод в браузере, и он отлично работает.
В клиенте я извлекаю возвращаемое значение из myFunc, выполняя это:

 string[] ret = ws.myFunc("arg1", "arg2");
  

Проблема в том, что ret всегда ничего не содержит, хотя при тестировании в браузере я получил это

 <ArrayOfAnyType xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"                xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://tempuri.org/">
    <anyType xsi:type="xsd:string">str01</anyType>
    <anyType xsi:type="xsd:string">str02</anyType>
</ArrayOfAnyType>
  

Я что-то упускаю? Спасибо вам!

Комментарии:

1. какова сигнатура myFunc в классе прокси, сгенерированном вашим дизайнером при добавлении веб-ссылки? Я не думаю, что вы можете обрабатывать ArrayList как массив строк… вам необходимо подтвердить сигнатуру метода в классе прокси..

2. это string[] myFunc(строка arg1, строка arg2)

3. вы проверяли длину массива после вызова веб-метода? возвращает ли это что-нибудь?

4. его длина = 0. Когда я меняю сигнатуру веб-метода на return string[], он работает нормально. Таким образом, проблема может заключаться в приведении ArrayList к string[] в веб-службе.

5. поскольку это сложный тип, вам необходимо его сериализовать…

Ответ №1:

Вы пробовали —

 List<string> ret = ws.myFunc("arg1", "arg2");
  

Поскольку возврат из веб-сервиса может быть в форме ArrayOfString .