2016-11-07 28 views
5

Używam zestawu SDK platformy .NET Azure.Zadanie zostało anulowane - co to znaczy?

Dzwonię synchronicznego (NIE ASYNC) Funkcja tak:

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

To zazwyczaj działa. Nie używam żadnych funkcji async, ale jakoś błąd Właśnie wygląda jak błąd asynchronicznym:

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

CancellationToken: IsCanceleationRequested=false 

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

StackTrace: 

at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.ConfiguredTaskAwaitable 1.ConfiguredTaskAwaiter.GetResult() at Microsoft.Azure.Search.DocumentsOperations.<DoContinueSearchWithHttpMessagesAsync>d__15 3.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.ConfiguredTaskAwaitable 1.ConfiguredTaskAwaiter.GetResult() at Microsoft.Azure.Search.DocumentsOperationsExtensions.<SearchAsync>d__15 1.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter 1.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, List 1 searchFields, SearchMode searchMode, List 1 select, Nullable 1 skip, Nullable 1 top, String filter, Boolean includeTotalResultCount, List 1 orderBy) in c:\Projects\MyAppServer\src\MyApp.AzureSearch\AzureSearchService.cs:line 262 at MyApp.AzureSearch.AzureSearchService.SearchEmails(Guid userId, String origin, String searchText, Nullable 1 skip, Nullable 1 top, Boolean includeTotalResultCount, Boolean includeHtmlBody, Boolean orderByProcessedAscending, String interactionStatus) in c:\Projects\MyAppServer\src\MyApp.AzureSearch\AzureSearchService.cs:line 167 at MyApp.Domain.MyAppMessages.Command.MyAppMessagesAllNoticedUpdater.Handle(VisitorSession userSession, NoticeAllMyAppMessages processCommand) in c:\Projects\MyAppServer\src\MyApp.Domain\MyAppMessages\Command\MyAppMessagesAllNoticedUpdater.cs:line 30

Odpowiedz

3

Najprawdopodobniej limit czasu klienta wygasł przed poszukiwanie została zakończona. Czy widzisz ten błąd, gdy przesyłasz szczególnie złożone zapytanie? W razie potrzeby możesz sprawdzić wydajność wyszukiwania w swojej usłudze, korzystając z numeru search traffic analytics.

Przyczyną wyjątku "asynchronicznego" jest to, że wersja synchroniczna interfejsu API jest po prostu opakowaniem asynchronicznych operacji podstawowych.

+0

Dzięki, doszedłem do wniosku, że po prostu zawijam funkcję asynchroniczną. Nie było to wcale złożone zapytanie, a także bardzo mało danych w zapytaniu. Nie oczekiwałem, że pakiet .net SDK zgłosi błąd, chyba że coś jest źle skonfigurowane w zapytaniu. Czy istnieje lista wszystkich możliwych błędów, które mogą być zgłaszane przez .net SDK, który powinienem obsłużyć? – richard

+0

Główne wyjątki, które można rzucać, to: 'CloudException',' IndexBatchException' (tylko do indeksowania), 'ValidationException' i oczywiście' OperationCanceledException' (lub jego podklasa 'TaskCanceledException', którą masz tutaj do czynienia). Ale ponieważ C# nie jest sprawdzonym językiem wyjątku, możesz również zobaczyć inne wyjątki (takie jak ArgumentException). –