Задание было отменено — что это значит?

Я использую пакет Azure Search .Net SDK.

Я вызываю синхронную (НЕ ASYNC) функцию следующим образом:

var searchResults = searchIndexClient.Documents.Search<T>(searchText, searchParameters);

Обычно это работает. Я не использую никаких асинхронных функций, но почему-то ошибка, которую я только что получил, выглядит как асинхронная ошибка:

System.Threading.Tasks.TaskCanceledException: A task was canceled.

CancellationToken: IsCanceleationRequested=false

Task: Id = 556, Status = Canceled, Method = "{null}", Result = "{Not yet computed}"

StackTrace:

в System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(задача задачи) в System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(задача задачи) в System.Runtime.CompilerServices.ConfiguredTaskAwaitable1.ConfiguredTaskAwaiter.GetResult() at Microsoft.Azure.Search.DocumentsOperations.<DoContinueSearchWithHttpMessagesAsync>d__153.MoveNext() --- Конец трассировки стека из предыдущего местоположения где было выдано исключение --- в System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() в System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(задача задачи) в System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(задача задачи) в System. Runtime.CompilerServices.ConfiguredTaskAwaitable1.ConfiguredTaskAwaiter.GetResult() at Microsoft.Azure.Search.DocumentsOperationsExtensions.<SearchAsync>d__151.MoveNext() --- Конец трассировки стека из предыдущего места, где было выдано исключение --- в System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() в System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task задача) в System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Tas k задача) в System.Runtime.CompilerServices.TaskAwaiter1.GetResult() at Microsoft.Azure.Search.DocumentsOperationsExtensions.Search[T](IDocumentsOperations operations, String searchText, SearchParameters searchParameters, SearchRequestOptions searchRequestOptions) at MyApp.AzureSearch.AzureSearchService.PerformSearch[T](String searchText, SearchParameters searchParameters) in c:\Projects\MyAppServer\src\MyApp.AzureSearch\AzureSearchService.cs:line 359 at MyApp.AzureSearch.AzureSearchService.Search[T](String searchText, List1 searchFields, SearchMode searchMode, List1 select, Nullable1 skip, Nullable1 top, String filter, Boolean includeTotalResultCount, List1 orderBy) в c:\Projects\MyAppServer\src\MyApp.AzureSearch\AzureSearchService.cs:строка 262 в MyApp.AzureSearch.AzureSearchService.SearchEmails (Guid userId, String origin, String searchText, Nullable1 skip, Nullable1 top, логическое значение includeTotalResultCount, логическое значение includeHtmlBody, логическое значение orderByProcessedAscending, строковое взаимодействиеStatus) в c:\Projects\MyAppServer\src\MyApp.AzureSearch\AzureSearchService.cs:строка 167 в MyApp.Domain. MyAppMessages.Command.MyAppMessagesAllNoticedUpdater.Handle(VisitorSession userSession, NoticeAllMyAppMessages processCommand) в c:\Projects\MyAppServer\src\MyApp.Domain\MyAppMessages\Command\MyAppMessagesAllNoticedUpdater.cs:строка 30


person richard    schedule 07.11.2016    source источник


Ответы (2)


Скорее всего, тайм-аут клиента истек до завершения поиска. Вы видите эту ошибку, когда отправляете особенно сложный запрос? При необходимости вы можете оценить эффективность поиска в своей службе с помощью аналитика поискового трафика.

Причина, по которой вы видите «асинхронное» исключение, заключается в том, что синхронная версия API является просто оболочкой над асинхронными примитивами.

person Eugene Shvets    schedule 07.11.2016
comment
Спасибо, я подумал, что это просто обертка асинхронной функции. Это был совсем не сложный запрос, да и данных в запросе было очень мало. Я не ожидал, что .net SDK выдаст ошибку, если что-то не было неправильно настроено в запросе. Есть ли список всех возможных ошибок, которые могут быть вызваны .net sdk, которые я должен обработать? - person richard; 07.11.2016
comment
Основные исключения, которые могут быть выброшены: CloudException, IndexBatchException (только для индексации), ValidationException и, конечно же, OperationCanceledException (или его подкласс TaskCanceledException, с которым вы здесь имеете дело). Но поскольку C# не является проверенным языком исключений, вы можете столкнуться и с другими исключениями (такими как ArgumentException). - person Eugene Shvets; 09.11.2016

Передайте CancellationToken=null и сделайте код асинхронным методом.

person Muni Chittem    schedule 28.08.2020