c# - 使用 ASP.NET Identity 3.x 删除用户的操作方法

标签 c# asp.net asp.net-identity asp.net-core-1.0 asp.net-identity-3

这是我删除用户的操作方法: 我觉得它正在阻塞,因为我使用 user.Result 将实际用户对象从一个异步结果传递到下一个异步方法。有更好的方法吗?

// POST: Users/Delete/5
[HttpPost, ActionName("Delete")]
[ValidateAntiForgeryToken]
public async Task<IActionResult> DeleteConfirmed(int id)
{
    var user = _userManager.FindByIdAsync(id.ToString());
    var result = await _userManager.DeleteAsync(user.Result);
    return RedirectToAction("Index");
}

最佳答案

你是对的。使用 user.Result 传递实际对象会阻塞异步方法。

使用async的最佳实践是在整个方法中始终使用await不要混合使用阻塞代码和异步代码

// POST: Users/Delete/5
[HttpPost, ActionName("Delete")]
[ValidateAntiForgeryToken]
public async Task<IActionResult> DeleteConfirmed(int id) {
    var user = await _userManager.FindByIdAsync(id.ToString());
    var result = await _userManager.DeleteAsync(user);
    return RedirectToAction("Index");
}

来源 - Async/Await - Best Practices in Asynchronous Programming

关于c# - 使用 ASP.NET Identity 3.x 删除用户的操作方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36661236/

相关文章:

c# - 采用 ref 类型并对其进行操作的 void 方法与将 ref 返回到同一对象的方法之间有什么区别

c# - 如何在 webforms 中为用户控件创建自定义事件?

asp.net - 异步任务 ASP.net HttpContext.Current.Items 为空 - 如何处理此问题?

asp.net - 在 asp.net(vb) 中控制 ajax 工具包自动完成的高度

c# - .NET 标识 : Generate token without explicit username/password

c# - 包含对象实例的静态方法,错了吗?

c# - 实例与方法作为参数——理解生命周期和垃圾收集

javascript - 在 JavaScript 中构建时间戳

c# - ASP.NET MVC 身份密码 RequiredLength

asp.net - 如何撤销/无效/取消旧的电子邮件确认 token (身份)