需要异步处理一个输入问题。
以下均代码适用 MVC4
controller 代码如下:
public class TestController : AsyncController
{
public async Task<ActionResult> Get1()
{
await Task.Delay(10000);
return Content(DateTime.Now.ToString("HH:mm:ss"));
}
}
public async Task<ActionResult> Get1()
{
await Task.Delay(10000);
return Content(DateTime.Now.ToString("HH:mm:ss"));
}
}
在做一个长链接调用这个 方法的时候,发现在 pedding 状态下刷新页面(或者转向另外一个有Session调用的页面)的时候 被 block 了。
经过1天的反复实验,发现问题出现在 Session。
当你在一个 使用了 Session 的页面中进行异步调用,那么会被阻止,因为 Session 被 lock 了。
问题解决:
为异步controller 增加属性:
[SessionState(System.Web.SessionState.SessionStateBehavior.Disabled)]