当我不使用异步函数时出现异步错误?
问题描述:
我有这个功能作为一个API的一部分,以确认付款后更新数据。 的所有作品,并更新数据,但未能重定向到指定的URL,并抛出这个错误: 当我不使用异步函数时出现异步错误?
我不明白,因为我没有使用异步的任何地方,为什么我得到它?帮助将不胜感激。
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;
}
答
您可以通过将一个地等待着这些方法的前尝试调用,如:
await RepositoryHelper.UpdateDonation
await RepositoryHelper.AddFreeUsers
await RepositoryHelper.UpgradeToPaid
await SendUserPaymentConfirmed
然后在方法声明中改变它:
public Task<HttpResponseMessage> PaymentConfirmed
生成项目,解决那里是错误的。很可能不支持异步的方法会投诉或者会出错。然后再次运行API并查看是否仍然出现相同的错误。
答
用户错误!!!!!!
发现的问题,虽然我发送消息返回一个空它这个依偎在它 client.SendAsync(mailMessage, null);
删除它和一切工作正常
你肯定没有这些你调用返回一个任务的方法呢?像'RepositoryHelper.UpdateDonation','RepositoryHelper.AddFreeUsers','RepositoryHelper.UpgradeToPaid','SendUserPaymentConfirmed'? – Igor
100%确定这些都不返回任何任务 – scottdavidwalker
发现了这个问题,尽管我的发送消息返回了一个无效的东西,它将它嵌套在它内部“client.SendAsync(mailMessage,null);” 删除它,一切正常 – scottdavidwalker