asp.net mvc中异步控制器的诡异
mvc中异步控制器提供异步anction的机制
实现方式很简单
1.controller继承AsyncController
2.原来的一个action方法,变成两个action方法:一个后缀名称+Async,一个后缀名称加Completed
3.其他都没有任何变化,请求路由,页面view等等都不变化,只是一个action变成了两个action
代码:
public class DefaultController : AsyncController
{
//
// GET: /Default/Default/
public void IndexAsync()
{
ViewData["d1"] = System.DateTime.Now.ToString();
AsyncManager.OutstandingOperations.Increment();
AsyncManager.OutstandingOperations.Decrement();
AsyncManager.Parameters["a"] = "abc";
ViewData["d2"] = System.DateTime.Now.ToString();
Thread.Sleep(2000);
}
public ActionResult IndexCompleted()
{
var x = AsyncManager.Parameters["a"];
return View();
}
//public ActionResult Index()
//{
// ViewData["d1"] = System.DateTime.Now.ToString();
// System.Threading.Thread.Sleep(2000);
// ViewData["d2"] = System.DateTime.Now.ToString();
// return View();
//}
}
我可能对异步不够了解,异步以后,我认为不论多少请求都可以进IndexAsync方法,应该都不会报503线程不够服务器异常的错误信息
。我在本机把并发连接设置成很小,然后开启了几个多线程程序来访问本机的一个url地址,开启第二个多线程测试成员的时候就已经开报错503,比较奇怪
求解
mvc中异步控制器提供异步anction的机制
实现方式很简单
1.controller继承AsyncController
2.原来的一个action方法,变成两个action方法:一个后缀名称+Async,一个后缀名称加Completed
3.其他都没有任何变化,请求路由,页面view等等都不变化,只是一个action变成了两个action
代码:
public class DefaultController : AsyncController
{
//
// GET: /Default/Default/
public void IndexAsync()
{
ViewData["d1"] = System.DateTime.Now.ToString();
AsyncManager.OutstandingOperations.Increment();
AsyncManager.OutstandingOperations.Decrement();
AsyncManager.Parameters["a"] = "abc";
ViewData["d2"] = System.DateTime.Now.ToString();
Thread.Sleep(2000);
}
public ActionResult IndexCompleted()
{
var x = AsyncManager.Parameters["a"];
return View();
}
//public ActionResult Index()
//{
// ViewData["d1"] = System.DateTime.Now.ToString();
// System.Threading.Thread.Sleep(2000);
// ViewData["d2"] = System.DateTime.Now.ToString();
// return View();
//}
}
我可能对异步不够了解,异步以后,我认为不论多少请求都可以进IndexAsync方法,应该都不会报503线程不够服务器异常的错误信息
。我在本机把并发连接设置成很小,然后开启了几个多线程程序来访问本机的一个url地址,开启第二个多线程测试成员的时候就已经开报错503,比较奇怪
求解
本文使用Blog_Backup未注册版本导出,请到soft.pt42.com注册。