Asp.net mvc 3 从不调用asp.net MvcHandler.ProcessRequest

Asp.net mvc 3 从不调用asp.net MvcHandler.ProcessRequest,asp.net-mvc-3,subdomain,asp.net-mvc-routing,httprequest,Asp.net Mvc 3,Subdomain,Asp.net Mvc Routing,Httprequest,在Asp.NETMVC3上,我已经覆盖了MvcRouteHandler和MvcHandler,以包括处理Url的子域部分 然而,它似乎从未调用MvcHandler的ProcessRequest方法 public class SubDomainMvcRouteHandler : MvcRouteHandler { protected override IHttpHandler GetHttpHandler(System.Web.Routing.RequestContext requestC

在Asp.NETMVC3上,我已经覆盖了MvcRouteHandler和MvcHandler,以包括处理Url的子域部分

然而,它似乎从未调用MvcHandler的ProcessRequest方法

public class SubDomainMvcRouteHandler : MvcRouteHandler
{
    protected override IHttpHandler GetHttpHandler(System.Web.Routing.RequestContext requestContext)
    {
        return new SubDomainMvcHandler(requestContext);
    }
}



您应该重写具有以下签名的
BeginProcessRequest

protected override IAsyncResult BeginProcessRequest(HttpContextBase httpContext, AsyncCallback callback, object state)

你知道为什么会调用它而不是ProcessRequest吗?我确实想了解下面发生了什么。
BeginProcessRequest
是处理和完成路由、实例化ControllerFactory和实例化控制器的地方。在BeginProcessRequest完成时,您想要完成的一切都已完成。
public static void RegisterRoutes(RouteCollection routes)
    {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

        routes.MapRoute(
            "Default", // Route name
            "{controller}/{action}/{id}", // URL with parameters
            new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
        ).RouteHandler = new SubDomainMvcRouteHandler();

    }
protected override IAsyncResult BeginProcessRequest(HttpContextBase httpContext, AsyncCallback callback, object state)