我有一个通过此方法调用的Web API:
public async Task<Model> AddModel(string token, Model newModel)
{
HttpContent content = await HttpHelper.Request(token, baseUrl, url, newModel, HttpRequestType.POST);
return await content.ReadAsAsync<Model>();
}
成功调用了Web API,我可以添加一个Model。这是被调用的Web API方法:
[Route("webapi/models/addModel")]
[HttpPost]
public async Task<ModelDto> AddWithoutResetingDefault(ModelDto newModel)
{
ModelService modelService = new ModelService();
return modelService.AddModel(newModel);
}
问题是在成功添加之后,它不再返回到调用代码(我有一个没有被击中的断点)。浏览器中没有控制台错误,我在try-catch中包含调用代码和被调用的代码,但没有抛出异常。
此外,在第一次单击添加后,如果我尝试刷新浏览器,则需要很长时间才能重新加载浏览器(我不知道异步是否与它有关)。
答案 0 :(得分:0)
(我不知道异步是否与它有关) - 是的,
你的Api方法
public async Task<ModelDto> AddWithoutResetingDefault(ModelDto newModel)
{
ModelService modelService = new ModelService();
return modelService.AddModel(newModel);
}
标记为异步方法,但内部代码为Sync。这就是问题,如果你的modelService.AddModel(newModel)
;是异步,然后做
return await modelService.AddModel(newModel);
如果没有,那么AddWithoutResetingDefault
就没有意义了
方法async,因此删除Aysnc并简单地执行像
public ModelDto AddWithoutResetingDefault(ModelDto newModel)
{
ModelService modelService = new ModelService();
return modelService.AddModel(newModel);
}