Службы мультимедиа Azure v3 - C# Запрос Odata завершается с ошибкой 400 Bad Request for properties.created gt date работает для API REST

Службы мультимедиа Azure v3 - C# Запрос Odata завершается с ошибкой 400 Bad Request for properties.created gt date работает для API REST.

Рабочая версия REST

ПОЛУЧИТЬ https://management.azure.com/subscriptions/1234/resourceGroups/ResGroup/providers/Microsoft.Media/mediaServices/testurstream/assets?api-version=2018-07-01&; $filter=properties/ созданный gt 2018-06-01 и свойства / созданные lt 2019-07-01

Сломанная версия.NET (трассировка Fiddler)

ПОЛУЧИТЬ https://management.azure.com/subscriptions/1234/resourceGroups/ResGroup/providers/Microsoft.Media/mediaServices/testurstream/assets? $ Filter = properties / созданный%20gt%20'2018-11-11T10%3A48%3A37Z'& апи-версия = 2018-07-01

Состояние документа больше, чем поддерживается для созданного.

properties.created Supports: Eq, Gt, Lt Supports: Ascending and Descending

Пример кода:

var query = new ODataQuery<Asset>(item => item.Created > lastFetchTime);
var assets = _client.Assets.List(ResourceGroup, AccountName, query);

Исключение:

Microsoft.Azure.Management.Media.Models.ApiErrorException
HResult=0x80131500
Message=Operation returned an invalid status code 'BadRequest'
Source=Microsoft.Azure.Management.Media
StackTrace:
  at Microsoft.Azure.Management.Media.AssetsOperations.<ListWithHttpMessagesAsync>d__5.MoveNext()
  at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
  at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
  at Microsoft.Azure.Management.Media.AssetsOperationsExtensions.<ListAsync>d__1.MoveNext()
  at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
  at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
  at Microsoft.Azure.Management.Media.AssetsOperationsExtensions.List(IAssetsOperations operations, String resourceGroupName, String accountName, ODataQuery`1 odataQuery)

Скрипач Результат

#   Result  Protocol    Host    URL Body    Caching Content-Type    Process Comments    Custom  
13  400 HTTPS   management.azure.com    /subscriptions/1234/resourceGroups/ResGroup/providers/Microsoft.Media/mediaServices/testurstream/assets?$filter=properties/created%20gt%20'2018-11-11T00%3A00%3A00Z'&api-version=2018-07-01 217 private application/json; charset=utf-8 amstestv3:7148          

2 ответа

Рабочая версия - форматировать строку напрямую.

if (lastFetchTime != null)
{
    var dateTime = lastFetchTime.GetValueOrDefault().ToUniversalTime().ToString("yyyy-MM-ddTHH:mm:ss.fffZ");
    var odataQuery = $"properties/created lt {dateTime}";
    query = new ODataQuery<Asset>(odataQuery);
}

var data = _client.Assets.List(ResourceGroup, AccountName, query);

Похоже,.NET цитирует строку для даты-времени 8601, которая прерывает вызов.

Я также проверил в Почтальоне, и это прекрасно работает: $ фильтр = свойства / создал GT 2018-01-11T01:00:00Z

Но эта строка в кавычках выдает похожее сообщение об ошибке: $filter=properties/ made gt '2018-01-11T01:00:00Z'

Позвольте мне проверить это с нашей командой.NET SDK.

Другие вопросы по тегам