【发布时间】:2016-07-25 05:45:53
【问题描述】:
我有一个 Web API 2 端点,我想在检索和验证用户时异步执行操作。如果此用户不存在,我想像这样返回 404 Not Found:
public async Task<IHttpActionResult> Get()
{
var getCatTask = GetCatAsync();
var user = await GetUserAsync();
if(user == null)
{
return NotFound();
}
var cat = await getCatTask;
return Ok(cat);
}
如果用户等于 null 并且方法在没有等待 getCatTask 的情况下返回,这是否会导致我潜在的问题,或者它被认为是一种不好的做法?
【问题讨论】:
-
我想出于性能原因,您可以在验证用户时开始获取数据(我认为我不会亲自这样做,因为如果您之前不小心开始向用户发送数据,它会带来潜在的安全风险它已经完成验证,但如果你仔细并且额外的性能真的是必须的那么也许)。但是,如果您返回“未找到”,最好中止异步任务(因为它会浪费处理器时间)。此外,由于数据无法个性化(用户未经过验证),将“GetCat”缓存在某处而不是每次都加载它不是更好吗?
标签: c# asp.net asynchronous asp.net-web-api async-await