Как настроить AllowedQueryOptions в мобильном приложении Azure? - PullRequest
0 голосов
/ 26 ноября 2018

Я пытаюсь получить общее количество элементов в мобильном приложении 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 () с клиента?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...