gpt4 book ai didi

asp.net - 在 async/await 之前的过去,WebAPI 请求是如何取消的?

转载 作者:行者123 更新时间:2023-12-02 16:56:58 25 4
gpt4 key购买 nike

在 .NET 4.5 中,使用异步/等待模式,可以通过在异步 Controller 方法中包含 CancellationToken 轻松取消 Web 请求。这当然可以传递给任何异步 Entity Framework 方法,并且整个事情可以很好地取消。

但是回到 6 年前,在异步时代之前,WebAPI 或 MVC Controller 方法是如何被取消的?这可能吗?如果是这样,是否还可以取消这些已取消请求中长时间运行的 Entity Framework 查询?

我提出这个问题的动机是,我进行了一些实验,发现几乎在所有情况下,我的大型 EF 查询的同步版本都比异步版本更快。异步版本的长度延长了 10% 到 50%。此外,我的应用程序供内部使用,实际上最多只能为 3 个并发用户提供服务,因此可扩展性不是问题。

简而言之,我想要老式同步 Entity Framework 方法(以及同步 Controller 方法)的速度,但具有可取消性。

最佳答案

But going back 6 years, before the days of async, how were WebAPI or MVC controller methods cancelled? Was it even possible? And if so, was it possible to also cancel long-running Entity Framework queries within those cancelled requests?

旧版 ASP.NET 使用 Thread.Abort取消同步请求。这当然最终会导致应用程序不稳定,因此 ASP.NET 将定期回收您的应用程序域(和服务进程)。

我不确定旧版 ASP.NET 是否使用 Thread.Abort取消异步请求(我的意思是当它们正在运行代码时)。我想是这样,但我不确定。

最后一点,请务必将您的性能问题通知 EF 团队。

关于asp.net - 在 async/await 之前的过去,WebAPI 请求是如何取消的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43285189/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com