2016-04-27 8 views
2

Ich habe diese Funktion als Teil einer API, um Daten zu aktualisieren, nachdem eine Zahlung bestätigt wurde. alles funktioniert und aktualisiert die Daten aber nicht an die angegebene URL und wirft diesen Fehler umleiten: enter image description hereEinen Async-Fehler erhalten, wenn ich keine Async-Funktion verwende?

Ich verstehe nicht, warum ich immer es bin, wie ich überall nicht async bin mit? Hilfe wäre willkommen.

public HttpResponseMessage PaymentConfirmed(string id, string email, string status, string amount, string product) 
{ 
    if(status == "Paid") 
    { 
     var Id = id; 
     var Email = email; 

     var uid = Convert.ToInt32(Id); 
     var userbyId = RepositoryHelper.GetPersonFromId(uid); 
     if (userbyId.UserType == "Donation") 
     { 
      RepositoryHelper.UpdateDonation(userbyId, amount); 
     } 
     if (userbyId.UserType == "Sponsor") 
     { 
      var school = RepositoryHelper.GetSchoolByUser(userbyId); 
      RepositoryHelper.AddFreeUsers(school); 
     } 
     if (userbyId.UserType == "School" || userbyId.UserType == "Pupil") 
     { 
      var complete = RepositoryHelper.UpgradeToPaid(userbyId); 
     } 

     SendUserPaymentConfirmed(userbyId); 

     HttpResponseMessage response = Request.CreateResponse(HttpStatusCode.Moved); 
     response.Headers.Location = new Uri("http://url here"); 
     return response; 
    } 
    return null; 
} 
+1

Sie sicher, dass keine dieser Methoden Sind Sie eine Aufgabe fordern zurückkehren? Wie 'RepositoryHelper.UpdateDonation',' RepositoryHelper.AddFreeUsers', 'RepositoryHelper.UpgradeToPaid',' SendUserPaymentConfirmed'? – Igor

+0

100% sicher, dass keine dieser Aufgaben eine Aufgabe zurückgibt. – scottdavidwalker

+0

Das Problem wurde gefunden, obwohl meine send-Nachricht eine Lücke zurückgegeben hat, die darin eingebettet war "client.SendAsync (mailMessage, null);" Entfernt es und alles funktioniert gut – scottdavidwalker

Antwort

0

Sie können versuchen, durch eine await vor dieser Methode setzen Anrufe wie:

await RepositoryHelper.UpdateDonation 
await RepositoryHelper.AddFreeUsers 
await RepositoryHelper.UpgradeToPaid 
await SendUserPaymentConfirmed 

dann in Methodendeklaration ändern:

public Task<HttpResponseMessage> PaymentConfirmed 

Erstellen Sie das Projekt und beheben, wo es sind Fehler. Wahrscheinlich werden sich die Methoden, die async nicht unterstützen, beschweren oder Fehler haben. Führen Sie die API dann erneut aus, und sehen Sie, ob Sie immer noch denselben Fehler erhalten.

0

Benutzerfehler !!!!!!

das Problem gefunden, obwohl meine Nachrichtens eine Lücke zurück es diese client.SendAsync(mailMessage, null);

entfernt es in ihm eingebettet war und alles funktioniert gut

Verwandte Themen