使用asp.net mvc异步控制器方法处理多个用户请求

本文关键字:处理 用户 请求 方法 控制器 net asp mvc 异步 异步控制 使用 | 更新日期: 2023-09-27 18:05:40

我有一个长时间工作的同步控制器方法,当它运行时,我无法得到其他用户请求的答案。

我使用async/await和ConfigureAwait(False)使一切异步,但我仍然需要等待。

简单示例:

    public async Task<ActionResult> Index()
    {
        var result = await Task.Run(() => Wait()).ConfigureAwait(false); 
        return View(result);
    }
    private async Task<bool> Wait()
    {
        await Task.Delay(60000);
        return true;
    }

现在,如果我发送请求到这个方法"mycontroller/Index",我希望我可以得到另一个方法"anotherController/Index"的视图,但我应该等到异步方法完成。

这是正常行为吗?我应该使用异步来释放ui线程,并使其可用,直到长时间运行的方法完成?

使用asp.net mvc异步控制器方法处理多个用户请求

NET序列化相同的Session请求,以避免多个线程同时写同一个Session的问题。带有session ReadOnly属性的控制器的动作将并行执行:

[SessionState(System.Web.SessionState.SessionStateBehavior.ReadOnly)]
public class MyController : Controller
{
  ...
}