Asp.net mvc 当当前请求处于休眠状态时,服务器是否应该能够执行第二个请求?

Asp.net mvc 当当前请求处于休眠状态时,服务器是否应该能够执行第二个请求?,asp.net-mvc,Asp.net Mvc,我正在使用ASP.NET MVC和IIS 7.5版 我在控制器中执行以下操作 public ActionResult Wait(int time = 10000) { var start = DateTime.Now; Thread.Sleep(time); var end = DateTime.Now; var diff = (end - start); return Json(new { start = start.ToStri

我正在使用ASP.NET MVC和IIS 7.5版

我在控制器中执行以下操作

public ActionResult Wait(int time = 10000)
{
    var start = DateTime.Now;

    Thread.Sleep(time);

    var end = DateTime.Now;

    var diff = (end - start);

    return Json(new {
        start = start.ToString("yyyy-MM-dd HH:mm:ss.fff"),
        end = end.ToString("yyyy-MM-dd HH:mm:ss.fff"),
        milliseconds = diff.TotalMilliseconds.ToString("#,###"),
    }, JsonRequestBehavior.AllowGet);
}
如果我访问: /等等?时间=10000

然后: /等等?时间=10

在第一个请求完成之前,甚至不会执行第二个请求

这是正常的行为,还是每个请求都应该在自己的线程中执行

在我们的应用程序中,不同的调用可能需要从不同的服务器请求数据,我不想等到一个复杂的请求完成后,再执行几个简单的请求(只需要本地数据)

编辑

我刚刚意识到我所说的是来自同一个用户(在同一个会话中)的请求。我想我只是有点迟钝,但也许还有人能帮我。

来自

并发请求和会话状态

每个会话对ASP.NET会话状态的访问是独占的,这意味着 如果两个不同的用户同时发出请求,则访问每个用户 同时授予单独的会话。但是,如果两个并发 对同一会话发出请求(使用同一会话ID 值),第一个请求以独占方式访问会话 信息。第二个请求仅在第一个请求之后执行 完成了。(第二个会话也可以访问,如果 由于第一个请求超过了 锁定超时。)如果@Page中的EnableSessionState值 指令设置为只读,这是对只读会话的请求 信息不会导致对会话数据的独占锁定。 但是,会话数据的只读请求可能仍需要等待 对于由要清除的会话数据的读写请求设置的锁

并发请求和会话状态

每个会话对ASP.NET会话状态的访问是独占的,这意味着 如果两个不同的用户同时发出请求,则访问每个用户 同时授予单独的会话。但是,如果两个并发 对同一会话发出请求(使用同一会话ID 值),第一个请求以独占方式访问会话 信息。第二个请求仅在第一个请求之后执行 完成了。(第二个会话也可以访问,如果 由于第一个请求超过了 锁定超时。)如果@Page中的EnableSessionState值 指令设置为只读,这是对只读会话的请求 信息不会导致对会话数据的独占锁定。 但是,会话数据的只读请求可能仍需要等待 对于由要清除的会话数据的读写请求设置的锁


非常感谢。因此,我将此属性添加到控制器,我就完成了(?:[SessionState(SessionStateBehavior.ReadOnly)],或者可以使控制器操作异步,这样就不会像那样阻塞。我猜那条线索。睡眠就是其中的一个例子,你并没有做那么愚蠢的事。谢谢。因此,我将此属性添加到控制器,我就完成了(?:[SessionState(SessionStateBehavior.ReadOnly)],或者可以使控制器操作异步,这样就不会像那样阻塞。我猜那条线索。睡眠就是其中的一个例子,而你实际上并没有做那么愚蠢的事情。