【问题标题】:Why does default MVC site use async ASP.net Identity?为什么默认 MVC 站点使用异步 ASP.net 身份?
【发布时间】:2014-05-07 18:44:04
【问题描述】:

我只是好奇为什么 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,然后再继续执行下一行代码,对吗?

【问题讨论】:

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


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 2017-06-16
    • 1970-01-01
    • 2019-06-09
    • 1970-01-01
    • 2011-07-19
    • 2011-12-30
    • 2023-03-17
    • 1970-01-01
    • 2014-10-12
    相关资源
    最近更新 更多