您现在的位置是:首页 >

xp框架如何激活 ASP.NET MVC 4框架揭秘:Controller的激活与URL路由[2]

火烧 2022-06-14 21:31:14 1072
ASP.NET MVC 4框架揭秘:Co troller的激活与URL路由[2]    u lic cla MvcHa dler : IHtt A y cHa dler IHtt Ha dler IR

ASP.NET MVC 4框架揭秘:Controller的激活与URL路由[2]  

  public class MvcHandler : IHttpAsyncHandler IHttpHandler IRequiresSessionState

  {

  //其他成员

  public RequestContext RequestContext { get; private set; }

  public bool IsReusable

  {

  get { return false; }

  }

  public MvcHandler(RequestContext requestContext)

  {

  this RequestContext = requestContext;

  }

  IAsyncResult BeginProcessRequest(HttpContext context AsyncCallback cb

  object extraData)

  {

  IControllerFactory controllerFactory =

  ControllerBuilder Current GetControllerFactory()

  string controllerName =

  this RequestContext RouteData GetRequiredString( controller )

  IController controller = controllerFactory

   CreateController(this RequestContext controllerName)

  if (controller is IAsyncController)

  {

  try

  {

  //调用BeginExecute/EndExecute方法以异步的方式执行Controller

  }

xp框架如何激活 ASP.NET MVC 4框架揭秘:Controller的激活与URL路由[2]

  finally

  {

  controllerFactory ReleaseController(controller)

  }

  }

  else

  {

  try

  {

  //调用Execute方法以异步的方式执行Controller

  }

  finally

  {

  controllerFactory ReleaseController(controller)

  }

  }

  }

  }

  由于MvcHandler同时实现了IHttpHandler和IHttpAsyncHandler接口 所以它总是以异步的方式被执行(调用BeginProcessRequest/EndProcessRequest方法) BeginProcessRequest方法通过RequestContext对象得到目标Controller的名称 然后利用当前ControllerBuilder创建的ControllerFactory激活Controller对象 如果Controller类型实现了IAsyncController接口 则以异步的方式执行Controller 否则采用同步执行方式 在被激活Controller对象被执行之后 MvcHandler会调用ControllerFactory的ReleaseController对其进行释放清理工作

      返回目录ASP NET MVC 框架揭秘

      编辑推荐

      ASP NET开发培训视频教程

      Microsoft NET框架程序设计视频教程

       Java程序性能优化 让你的Java程序更快 更稳定

       Visual C++音频/视频技术开发与实战

lishixinzhi/Article/program/net/201311/16087  
永远跟党走
  • 如果你觉得本站很棒,可以通过扫码支付打赏哦!

    • 微信收款码
    • 支付宝收款码