将同步控制器基本分类到异步控制器以隐藏复杂性

时间:2011-03-27 14:16:40

标签: c# asp.net-mvc

class MyBaseController : AsyncController
{
    // ... 
}

class SimpleController : MyBaseController
{
   public ActionResult MySyncAction()
   {
   }
}

总是必须做一件事, OperationX()。这是 ALL 我的请求的长期操作。它的价值因许多事情而有所不同,但这是一个技术细节。

我想以ASync方式执行此操作,然后以常规方式调用控制器的操作方法。我们在SimpleController世界中有大量代码,我们有数百个控制器和路由等,因此不能将所有这些代码转换为ASync。

因此问题是,如何拦截进入MyBaseController的MySyncAction的动作,然后调用MyBaseController的Async动作 ALWAYS ,然后仅在完成时调用basecontroller中的async动作,是吗?然后调用SimplerController的MySyncAction。

这是可能的,最好的方法是什么?

1 个答案:

答案 0 :(得分:0)

如果您只想在BaseController之后调用SimpleController的MySyncAction,那么不能使用FilterAttribute来完成吗?

以下是执行某些日志记录的自定义过滤器属性的示例... http://www.asp.net/mvc/tutorials/understanding-action-filters-cs

[MyFilterAttribute]
class SimpleController : AsyncController
{
   public ActionResult MySyncAction()
   {
   }
}