Операция службы WCF не подвергает данных по запросу

StackOverflow https://stackoverflow.com/questions/3106448

Вопрос

У меня есть сервисная работа формы:

[WebGet]
public IQueryable<BusinessObject> BusinessObjectsByType(string name)

с правилом доступа

config.SetServiceOperationAccessRule("BusinessObjectsByType", ServiceOperationRights.All);

Когда я получаю доступ к этой операции службы через веб-браузер, он обнародует данные, но не в каналах и записях (формате ATOMPUB), и он не позволяет мне использовать базовые возможности запроса, такие как $ Top, $ orderby, etc, жалующийся, что они не могут применяться на запрошенный ресурс ». Я соответствовал всем требованиям, указанным в http://msdn.microsoft.com/en-us/library/cc668788.aspx. Но без успеха. Любая помощь будет оценена. Спасибо.

Это было полезно?

Решение

Если BussinesObject не распознается в качестве объекта, операция службы будет обработана как если бы вместо этого возвращается INUMERALABLE. Для запроса на работу операция службы должна вернуть iQueryable, где t представляет собой тип объекта. Предполагая, что либо поставщик EF, либо отражения, тип сущности - это тип, который имеет ключевое свойство (либо по эврюстичному, либо через атрибут DataServiceKee), и для которых есть свойство в классе контекста типа IQueryable. Если BussinesObject не является объектом, сервисы данных WCF не могут поддерживать запросы на результате операции службы. Есть много причин, чтобы назвать только один: для сериализации ответа каждый объект должен иметь уникальный URL (это атом: ID), чтобы иметь возможность генерировать уникальный URL, объект должен иметь ключевые свойства. И ключевые свойства могут быть определены только на объектах.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top