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

时间:2015-07-30 16:08:49

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

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

我使用async / await和ConfigureAwait(False)使所有内容都异步,但我仍然需要等待。

简单示例:

specialistServiceMock

现在,如果我向此方法发送请求" mycontroller / Index",我希望我可以获取View for another method" anotherController / Index",但我应该等到异步方法完成了。

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

1 个答案:

答案 0 :(得分:3)

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

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