Ограничить или изменить запрос источника OData с помощью WCF Data Services - PullRequest
2 голосов
/ 27 октября 2011

Если я представляю коллекцию объектов через OData с помощью WCF Data Services и хочу запретить пользователю выполнять запросы, которые могут быть слишком сложными или потреблять слишком много ресурсов, и я могу каким-то образом подключиться к запросу до результаты возвращаются?

Насколько я понимаю, если пользователь делает запрос LINQ на стороне клиента, он преобразуется в REST URL со всеми параметрами запросов, а затем запрос выполняется на стороне сервера. Если так, то это то, что я хочу как-то подключить и, возможно, ограничить их только определенными операциями.

1 Ответ

1 голос
/ 27 октября 2011

На сервере каждый входящий запрос преобразуется в выражение LINQ, которое затем выполняется для IQueryable, предоставляемого контекстом данных.Вы можете обернуть IQueryable, проверить, выполняется ли LINQ, и потерпеть неудачу, если считаете его слишком сложным.Я написал серию постов в блоге о деревьях выражений LINQ, которые генерирует сервис, и на какие запросы они отображаются.http://blogs.msdn.com/b/vitek/archive/2010/02/25/data-services-expressions-part-1-intro.aspx Во второй части также есть образец, как перехватить запрос (образец там записывает его, но вы также можете добавить свой проверочный код).

...