c# - 为什么默认 MVC 站点使用异步 ASP.net 标识?

标签 c# asp.net asp.net-mvc asp.net-identity

我很好奇为什么 ASP.net MVC 网站模板使用 ASP.net Identity 的异步方法?他们似乎没有做任何可以从使用异步方法中获益的事情。

例如,为什么使用:

IdentityResult result = 
    await UserManager.RemoveLoginAsync(User.Identity.GetUserId(), new UserLoginInfo(loginProvider, providerKey));

代替:

IdentityResult result = 
    UserManager.RemoveLogin(User.Identity.GetUserId(), new UserLoginInfo(loginProvider, providerKey));

他们不是在做同样的事情吗?在这两种情况下,您都在等待 IdentityResult,然后再继续下一行代码,对吗?

最佳答案

正确,您正在等待 RemoveLoginAsync 返回,然后再执行下一行代码。但是,这样做有好处......

当 RemoveLoginAsync 正在执行时,它不会锁定线程(因为它是异步的)。因此,以第二个示例为例,如果您的应用程序有 4 个可用线程,并且有 4 个请求进入,所有请求都在等待同步调用,那么其他请求将在它们被处理之前进入队列。

但是如果您在等待时有一个异步调用,那么它会释放该线程来处理更多请求。

关于c# - 为什么默认 MVC 站点使用异步 ASP.net 标识?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23525800/

相关文章:

c# - 根据 XML 元素的值创建 if 语句 block

c# - 如何将 PrincipalContext 与 MVC Web 应用程序一起使用

asp.net-mvc - MVC捕获异常后在哪里可以找到错误信息

c# - 使用 .Net 检测外部应用程序中的拖放操作

c# - System.Timers.Timer 间隔重置导致重启

c# - 在 HTTPS 请求中,Request.IsSecureConnection 返回 false

asp.net - 云服务监控变化

asp.net-mvc - 'System.Web.Mvc.ViewPage'类型不明确

c# - Automapper - 使用嵌套 View 模型映射 View 模型

c# - 如何在没有父类的情况下使用内联变量声明内联对象