2016-04-27 142 views
2

我有這個功能作爲一個API的一部分,以確認付款後更新數據。 的所有作品,並更新數據,但未能重定向到指定的URL,並拋出這個錯誤: enter image description here當我不使用異步函數時出現異步錯誤?

我不明白,因爲我沒有使用異步的任何地方,爲什麼我得到它?幫助將不勝感激。

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

你肯定沒有這些你調用返回一個任務的方法呢?像'RepositoryHelper.UpdateDonation','RepositoryHelper.AddFreeUsers','RepositoryHelper.UpgradeToPaid','SendUserPaymentConfirmed'? – Igor

+0

100%確定這些都不返回任何任務 – scottdavidwalker

+0

發現了這個問題,儘管我的發送消息返回了一個無效的東西,它將它嵌套在它內部「client.SendAsync(mailMessage,null);」 刪除它,一切正常 – scottdavidwalker

回答

0

您可以通過將一個地等待着這些方法的前嘗試調用,如:

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

然後在方法聲明中改變它:

public Task<HttpResponseMessage> PaymentConfirmed 

生成項目,解決那裏是錯誤的。很可能不支持異步的方法會投訴或者會出錯。然後再次運行API並查看是否仍然出現相同的錯誤。

0

用戶錯誤!!!!!!

發現的問題,雖然我發送消息返回一個空它這個依偎在它 client.SendAsync(mailMessage, null);

刪除它和一切工作正常