我在ProcessRequest
内看到了一个名为MvcHandler
的函数,但我无法弄清楚何时会调用它?
什么时候会被调用以及谁/什么称呼它?
答案 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