Я пишу веб-службу ASP.NET Web API 2 с помощью OdataControllers. Я узнал, как установить размер страницы, используя PageSize Свойство EnableQueryAttribute. Я хочу разрешить пользователям моей веб-службы устанавливать размер страницы в app.config, а затем попросить приложение прочитать этот параметр и установить размер страницы. Проблема в том, что для использования атрибута требуется, чтобы параметр «Размер страницы» был установлен на константу времени компиляции.Настройка результата OData Размер страницы во время выполнения в приложении WebAPI
Использование атрибута:
[EnableQuery(PageSize = 10)]
public IHttpActionResult GetProducts()
{
return repo.GetProducts();
}
Одно предложенное решение, которое я видел, чтобы построить EnableQueryAttribute и установить его на объекте HTTPConfiguration конфигурации, как этот
int customSize = ReadPageSizeSettingFromConfigFile();
var attr = new EnableQueryAttribute { PageSize = customSize };
config.AddODataQueryFilter(attr);
, но это на самом деле не работает , Коллекция фильтра HttpConfiguration остается пустой.
Комментарий на другую должность (погребенной в списке комментариев) предложил убрать все EnableQuery атрибутов контроллеров, но это не имеет никакого эффекта либо. Поскольку атрибут EnableQuery заменил старый атрибут Queryable, мне интересно, является ли это проблемой Microsoft.
Этот вопрос был задан и не ответил раньше: How limit OData results in a WebAPI
Вся помощь очень ценится.
немного запутанным. Пользователь делает запрос web-api, и вы хотите, чтобы этот запрос api изменил файл app.config? Вы уверены, что это хорошая идея? –
Я расширил свой вопрос, чтобы уточнить. Я хочу прочитать значение из app.config и установить его во время выполнения. – cl0h