最新需要用到mvc4 的异步action,以实现页面ajax同时指定一个耗时查询。
使用了AsyncController。
参考文章:
http://www.oschina.net/question/565065_68409
public class DevController : AsyncController
{
public Task<ActionResult> Article2(string name)
{
return Task.Factory.StartNew(() =>
{
string path = ControllerContext.HttpContext.Server.MapPath(string.Format(@"\articles\{0}.html", name));
using (StreamReader reader = new StreamReader(path))
{
return reader.ReadToEnd();
}
}).ContinueWith<ActionResult>(task =>
{
return Content((string)task.Result);
});
}
}
执行起来没有问题,但是实际中使用发现,几个ajax调用虽是同时发起请求,但是服务器段还是同步依次执行每个action。。。。
原来需要增加如下内容:
[SessionState(SessionStateBehavior.ReadOnly)]
<pre name="code" class="csharp">public class DevController : AsyncController
{
。。。。。。。
}