【问题标题】:Process multiple user requests with asp.net mvc async controller method使用 asp.net mvc 异步控制器方法处理多个用户请求
【发布时间】:2015-10-22 02:41:21
【问题描述】:

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

我使用 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”的视图,但我应该等到异步方法完成。

这是正常行为吗?我应该使用 async 来释放 ui 线程并使其在长时间运行的方法完成之前可用吗?

【问题讨论】:

    标签: c# asp.net asp.net-mvc async-await


    【解决方案1】:

    ASP.NET 序列化相同的Session 请求以避免从多个线程同时写入相同的Session 的问题。标有 sessionReadOnly 属性的控制器的动作将并行执行:

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

    【讨论】:

    • 谢谢你,对我帮助很大!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-09-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-14
    相关资源
    最近更新 更多