Службы мультимедиа 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.