wcf возвращает список из wcf sservice - PullRequest
1 голос
/ 20 сентября 2010

Как можно вернуть какой-то список из службы WCF, этот метод в моей службе WCF.

Мой интерфейс:

[OperationContract]
[WebInvoke(Method = "GET",
 ResponseFormat = WebMessageFormat.Json,
 BodyStyle = WebMessageBodyStyle.Wrapped,
 UriTemplate = "Locations")]
IList<Location> GetLocations();

public IList<Location> GetLocations()
{
   Pazar.Data.Repositories.LocationRepository locRepository = 
       new Pazar.Data.Repositories.LocationRepository();
   return locRepository.GetRootLocations().ToList<Location>();
 }

и вот так выглядит мой GetRootLocations. Возвращается IQueryable. Интересно, могу ли я вернуть IQueryable из службы WCF?

public IQueryable<Location> GetRootLocations()
{
   IQueryable<Location> locations = GetAll().Where(p => !p.ID_Parent.HasValue).OrderBy(p => p.Sequence);
   return locations;
}

Ответы [ 2 ]

5 голосов
/ 29 сентября 2010

Список сериализуется так же, как массив, когда он передается в виде SOAP-пакета - это просто XML.Ваш клиент должен определить, что коллекция должна быть помещена в список вместо массива.

Если вы используете службу с клиентом .NET (и используете «Добавить ссылку на службу ...»«инструмент), это очень легко.Во всплывающем окне «Добавить ссылку на службу» нажмите «Дополнительно» (или, если у вас уже есть ссылка на службу, щелкните ее правой кнопкой мыши и выберите «Настроить ссылку на службу ...»), и вы увидите экран настройки для ссылки на службу.

Здесь есть выпадающий список, который позволяет вам выбрать «Тип коллекции», где по умолчанию установлено значение System.Array.Просто измените это на System.Collections.Generic.List и все готово.Обычно я делаю это всякий раз, когда добавляю ссылку на сервис таким способом.

3 голосов
/ 20 сентября 2010

Нет способа вернуть список из WCF, так как это специфический тип .NET. WCF предназначен для использования любым клиентом, а не только клиентами .NET. Чтобы получить список на клиенте, вы должны взять массив, который встречается по сети, и создать список в коде на стороне клиента.

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