2014-11-23 10 views
8

Wenn ich versuche, ein Dokument in meiner DocumentDB-Datenbank mit dem folgenden Code zu erstellen, hängt der Code, wo ich CreateDocumentAsync() aufrufen und gibt mir schließlich eine Aufgabe wurde abgebrochen "Fehler."Eine Aufgabe wurde abgebrochen" beim Erstellen eines Dokuments in DocumentDB

Irgendeine Idee warum?

public static async Task<Employee> CreateEmployee(Employee emp) 
{ 
    try 
    { 
     using (client = new DocumentClient(new Uri(endPointUrl), authorizationKey)) 
     { 
     //Get the database 
     var database = await GetDatabaseAsync(); 

     //Get the Document Collection 
     var collection = await GetCollectionAsync(database.SelfLink, "Employees"); 

     await client.CreateDocumentAsync(collection.SelfLink, emp); 

     // Do something else with employee 
     } 
    } 
    catch 
    { 
     // Handle error 
    } 

    return emp; 
} 

P.S. Aus Platzgründen habe ich den Code für die Abschnitte GetDatabaseAsync() und GetCollectionsAsync() nicht aufgenommen. Bitte beachten Sie, dass das Mitarbeiterdokument in meiner Datenbank erstellt wurde. Dieser Code stellt eine eindeutige Verbindung zur DocumentDB-Datenbank her, sucht die Sammlung und erstellt das Dokument.

Nur nicht sicher, warum es hängt und schließlich den Fehler zurückgibt.

***** Update-******

Hier ist die Fehlerdetails: Eine Aufgabe abgebrochen wurde.

Beschreibung: Bei der Ausführung der aktuellen Webanforderung ist eine nicht behandelte Ausnahme aufgetreten. Bitte überprüfen Sie die Stack-Trace für weitere Informationen über den Fehler und wo es aus dem Code stammt.

Ausnahmedetails: System.Threading.Tasks.TaskCanceledException: Eine Aufgabe wurde abgebrochen. Quellfehler:

HttpResponseMessage response = await client.PostAsJsonAsync("api/hr/register", employee); 

Stack Trace:

[TaskCanceledException: A task was canceled.] 
    System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) +10915395 
    System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) +52 
    System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() +24 
    ConsumerWebApi.Controllers.<Index>d__0.MoveNext() in c:\Users\Sam\Documents\Visual Studio 2013\Projects\ConsumerWebApi\ConsumerWebApi\Controllers\HomeController.cs:36 
    System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() +22 
    System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) +10915367 
    System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) +52 
    System.Runtime.CompilerServices.TaskAwaiter.GetResult() +21 
    System.Threading.Tasks.TaskHelpersExtensions.ThrowIfFaulted(Task task) +61 
    System.Web.Mvc.Async.TaskAsyncActionDescriptor.EndExecute(IAsyncResult asyncResult) +114 
    System.Web.Mvc.Async.<>c__DisplayClass37.<BeginInvokeAsynchronousActionMethod>b__36(IAsyncResult asyncResult) +66 
    System.Web.Mvc.Async.WrappedAsyncResult`1.CallEndDelegate(IAsyncResult asyncResult) +47 
    System.Web.Mvc.Async.WrappedAsyncResultBase`1.End() +135 
    System.Web.Mvc.Async.AsyncResultWrapper.End(IAsyncResult asyncResult, Object tag) +102 
    System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeActionMethod(IAsyncResult asyncResult) +49 
    System.Web.Mvc.Async.AsyncInvocationWithFilters.<InvokeActionMethodFilterAsynchronouslyRecursive>b__3d() +117 
    System.Web.Mvc.Async.<>c__DisplayClass46.<InvokeActionMethodFilterAsynchronouslyRecursive>b__3f() +323 
    System.Web.Mvc.Async.<>c__DisplayClass33.<BeginInvokeActionMethodWithFilters>b__32(IAsyncResult asyncResult) +44 
    System.Web.Mvc.Async.WrappedAsyncResult`1.CallEndDelegate(IAsyncResult asyncResult) +47 
    System.Web.Mvc.Async.WrappedAsyncResultBase`1.End() +135 
    System.Web.Mvc.Async.AsyncResultWrapper.End(IAsyncResult asyncResult, Object tag) +102 
    System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeActionMethodWithFilters(IAsyncResult asyncResult) +50 
    System.Web.Mvc.Async.<>c__DisplayClass2b.<BeginInvokeAction>b__1c() +72 
    System.Web.Mvc.Async.<>c__DisplayClass21.<BeginInvokeAction>b__1e(IAsyncResult asyncResult) +185 
    System.Web.Mvc.Async.WrappedAsyncResult`1.CallEndDelegate(IAsyncResult asyncResult) +42 
    System.Web.Mvc.Async.WrappedAsyncResultBase`1.End() +132 
    System.Web.Mvc.Async.AsyncResultWrapper.End(IAsyncResult asyncResult, Object tag) +56 
    System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeAction(IAsyncResult asyncResult) +40 
    System.Web.Mvc.Controller.<BeginExecuteCore>b__1d(IAsyncResult asyncResult, ExecuteCoreState innerState) +34 
    System.Web.Mvc.Async.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult asyncResult) +70 
    System.Web.Mvc.Async.WrappedAsyncResultBase`1.End() +138 
    System.Web.Mvc.Async.AsyncResultWrapper.End(IAsyncResult asyncResult, Object tag) +59 
    System.Web.Mvc.Async.AsyncResultWrapper.End(IAsyncResult asyncResult, Object tag) +40 
    System.Web.Mvc.Controller.EndExecuteCore(IAsyncResult asyncResult) +44 
    System.Web.Mvc.Controller.<BeginExecute>b__15(IAsyncResult asyncResult, Controller controller) +39 
    System.Web.Mvc.Async.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult asyncResult) +62 
    System.Web.Mvc.Async.WrappedAsyncResultBase`1.End() +138 
    System.Web.Mvc.Async.AsyncResultWrapper.End(IAsyncResult asyncResult, Object tag) +59 
    System.Web.Mvc.Async.AsyncResultWrapper.End(IAsyncResult asyncResult, Object tag) +40 
    System.Web.Mvc.Controller.EndExecute(IAsyncResult asyncResult) +39 
    System.Web.Mvc.Controller.System.Web.Mvc.Async.IAsyncController.EndExecute(IAsyncResult asyncResult) +39 
    System.Web.Mvc.MvcHandler.<BeginProcessRequest>b__5(IAsyncResult asyncResult, ProcessRequestState innerState) +39 
    System.Web.Mvc.Async.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult asyncResult) +70 
    System.Web.Mvc.Async.WrappedAsyncResultBase`1.End() +138 
    System.Web.Mvc.Async.AsyncResultWrapper.End(IAsyncResult asyncResult, Object tag) +59 
    System.Web.Mvc.Async.AsyncResultWrapper.End(IAsyncResult asyncResult, Object tag) +40 
    System.Web.Mvc.MvcHandler.EndProcessRequest(IAsyncResult asyncResult) +40 
    System.Web.Mvc.MvcHandler.System.Web.IHttpAsyncHandler.EndProcessRequest(IAsyncResult result) +38 
    System.Web.CallHandlerExecutionStep.OnAsyncHandlerCompletion(IAsyncResult ar) +129 
+0

Könnte Ihre Anfrage Timeout sein? –

+0

Ich denke, dass genau das passiert, aber ich verstehe nicht, warum es ausgeht. Warum reagiert die DocumentDB nicht, obwohl das Dokument erstellt wurde? – Sam

+0

Hey - nur nach dem Thread in den DocumentDB MSDN Foren (http://goo.gl/VZ23ls) und dem anderen Stackoverflow-Thread (http://stackoverflow.com/questions/27116794/want-to-understand-async). Es klingt, als ob die Ausnahme vom Mischen von synchronem und asynchronem Code herrührt. Konnten Sie dieses Problem lösen? Wäre schön, hier eine Antwort für andere stackoverflow-Benutzer hinzuzufügen :) –

Antwort

6

Das Problem von nicht async bekommen Anrufe direkt verursacht wurde. Ich habe eine asynchrone Methode, d. H. CreateDocumentAsync(), falsch aufgerufen.

Ich habe eine separate Frage zu async Programmierung gestellt und die Antworten, die ich bekam, halfen mir, das Problem zu beheben. Hier ist dieser Beitrag: Want to understand async

+0

Super! Ich habe das asynchrone Modell gefunden, das mich ziemlich verwirrt :) –

Verwandte Themen