Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我对 ASP.NET MVC 有点陌生,搜索后我还有一件事不明白。为什么需要异步控制器?由于每个 HTTP 请求都会导致服务器创建一个新的控制器实例,所以服务器不会阻塞任何请求,那么为什么需要异步控制器呢?
异步控制器的全部意义在于在执行长操作时释放 IIS 线程。IIS 线程是从 .NET 线程池中提取的。线程池线程的最大数量将根据您的系统配置而有所不同(在我的 core-2-quad 上是 1023)。这意味着长操作将消耗这些线程之一。当达到最大数量时,其他请求可能必须等到释放一个。说的很清楚:如果你有 1023 个动作执行长轮询请求,你的网站将停止响应额外的请求。
当您使用异步控制器时,您可以在线程池之外创建线程,从而绕过这个最大线程限制。