2016-04-27 112 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);

删除它和一切工作正常