什么时候调用MvcHandler.ProcessRequest方法并由谁调用?

时间:2015-08-28 07:17:01

标签: asp.net-mvc

我在ProcessRequest内看到了一个名为MvcHandler的函数,但我无法弄清楚何时会调用它?

什么时候会被调用以及谁/什么称呼它?

1 个答案:

答案 0 :(得分:4)

它由ASP .Net管道调用,作为其生命周期的一部分,以及使用路由时采取的具体步骤。

当mvc路由与当前请求匹配时,其MvcRouteHandler将返回将处理请求的IHttpHandler。在这种情况下,返回MvcHandler

protected virtual IHttpHandler GetHttpHandler(RequestContext requestContext)
{
    requestContext.HttpContext.SetSessionStateBehavior(GetSessionStateBehavior(requestContext));
    return new MvcHandler(requestContext);
}

MvcHandler实现IHttpHandler,这是一个ASP接口,用于定义http请求的处理程序。

所有这些都是标准ASP. Net application lifecycle的一部分,其中UrlRoutingModule正在寻找匹配的路由,获取其路由处理程序,最后是IHttpHandler。这将返回到ASP,稍后会调用ProcessRequest(您可以将其视为request is processed by the HttpApplication pipeline部分的第15步)。

PS。有一个非常好的MVC特定流水线图here