Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Сбой операции службы данных с параметрами, вызываемыми из клиентской библиотеки.

Автор вопроса: baioОтветов: 1

Подобный вопрос уже задавался здесь:

Работа службы ADO.Net Services с параметрами вызывается из клиентской библиотеки не работает

Полное описание проблемы, как у меня сейчас. Единственное отличие - это то, что я правильно передаю все параметры.

У меня есть этот метод операции, определенный в службе данных:

[WebGet]
    public IQueryable<Equipment> GetCompanyEquips(int id)
    {
        return this.CurrentDataSource.GetCompanyEquips(id);
    }

И я могу без проблем получить результат в своем веб-браузере:

http://localhost:51685/ITSServiceOData.svc/GetCompanyEquips?id=18

Но когда я пытаюсь получить на своем клиенте такой результат:

 var r = this.CreateQuery<Equipment>("GetCompanyEquips");

            r.AddQueryOption("id", CompanyId);

            r.ToArray();

У меня есть следующее исключение:

"Произошла ошибка при обработке этого запроса".

Также я вижу в отладчике, что r.Query = "{http://localhost:51685/ITSServiceOData.svc/GetCompanyEquips} ", и я подозреваю, что здесь что-то не так, потому что я не вижу здесь? Id = 18 в конце.

Также, когда я вызываю такой метод:

this.Execute ("http://localhost:51685/ITSServiceOData.svc/GetCompanyEquips?id=18 ") - return содержит пустое перечисление (хотя в этом случае исключение не возникает), но когда я вызываю ту же строку запроса в браузере, он показывает ожидаемый результат.

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

Спасибо.

odatawcf-data-services

Ответы

Ответ 1 · рейтинг 2 · Vitek Karas MSFT

Метод AddQueryOption возвращает новый экземпляр IQueryable. Итак, вам нужно изменить свой код, чтобы:

r = r.AddQueryOption("id", CompanyId);

Еще одно: клиентская библиотека не поддерживает чтение ответов на операции службы, возвращающие перечисление примитивных или сложных типов. Итак, чтобы это работало, тип оборудования должен быть типом объекта.

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы