Я пытаюсь получить общее количество элементов в мобильном приложении Azure.Мобильное приложение представляет собой реализацию .Net, которая использует Table Storage.Он основан на коде QuickStart мобильного приложения и содержит только минимальные изменения, необходимые для его работы с Table Storage.Все пакеты NuGet были обновлены до последних версий.
Вот код клиента (Xamarin-Android):
client = new MobileServiceClient(applicationURL, new LoggingHandler(true));
todoTable = client.GetTable<ToDoItem>();
List<ToDoItem> list = await todoTable.Take(0).IncludeTotalCount().ToListAsync();
Это дает мне ответ
Запрос, указанный в URI, недопустим: параметр запроса «InlineCount» не разрешен.Чтобы разрешить это, установите свойство 'AllowedQueryOptions' в EnableQueryAttribute или QueryValidationSettings. '.
Что я пробовал
[EnableQuery(AllowedQueryOptions= AllowedQueryOptions.All]
public Task<IEnumerable<TodoItem>> GetAllTodoItems(ODataQueryOptions options)
{
return DomainManager.QueryAsync(options);
}
Это все еще дает мнета же ошибка назад.Я пробовал также различные комбинации AllowedQueryOptions, такие как [EnableQuery (AllowedQueryOptions = AllowedQueryOptions.Filter | AllowedQueryOptions.Top | AllowedQueryOptions.Select | AllowedQueryOptions.InlineCount)], но результат всегда пробовал 101 *
*1017* * 1017добавить параметр в ConfigureMobileApp ()
config.Filters.Add(new EnableQueryAttribute()
{
AllowedQueryOptions = AllowedQueryOptions.All
});
Компиляция и публикация кода, похоже, удалась, но веб-сайт, который отображается после публикации отображаемого кода
<?xml version="1.0" encoding="ISO-8859-1"?>
<Error>
<Message>An error has occurred.</Message>
</Error>
Клиент по-прежнемувозвращая то же самое сообщение об ошибке.Я также пытался объединить это с [EnableQuery], но все еще не повезло.
DomainManager инициализируется с использованием кода
DomainManager = new StorageDomainManager<TodoItem>(connectionStringName, tableName, Request);
Я пытался изменить это, чтобы использовать конструктор, который принимаетValidationSettings и ODataQuerySettings объекты.
DomainManager = new StorageDomainManager<TodoItem>(connectionStringName, tableName, Request, GetValidationSettings(), GetQuerySettings());
Моя реализация GetValidationSettings идентична GetDefaultValidationSettings для https://github.com/Azure/azure-mobile-apps-net-server/blob/master/src/Microsoft.Azure.Mobile.Server.Storage/StorageDomainManager.cs
, за исключением того, что я добавил inlinecount для AllowedQueryOptions
AllowedQueryOptions = AllowedQueryOptions.Filter
| AllowedQueryOptions.Top
| AllowedQueryOptions.Select
| AllowedQueryOptions.InlineCount,
делбольше не получают ту же ошибку, так как это привело к сбою QueryAsync с внутренней ошибкой сервера.
Кто-нибудь знает, как настроить AllowedQueryOptions, чтобы я мог использовать IncludeTotalCount () с клиента?