Asp.net mvc 3 从不调用asp.net MvcHandler.ProcessRequest
在Asp.NETMVC3上,我已经覆盖了MvcRouteHandler和MvcHandler,以包括处理Url的子域部分 然而,它似乎从未调用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
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)