public virtual void PostResolveRequestCache(HttpContextBase context) { //1.传入当前上下文对象,得到与当前请求匹配的RouteData对象 MyRouteData routeData = RouteCollection.GetRouteData(context); if (routeData == null) { return; } //2.从RouteData对象里面得到当前的RouteHandler对象。 IMyRouteHandler routeHandler = routeData.RouteHandler; if (routeHandler == null) { return; } //3.根据RequestContext对象得到处理当前请求的HttpHandler(MvcHandler)。 IHttpHandler httpHandler = routeHandler.GetHttpHandler(routeData, context); if (httpHandler == null) { return; } //4.请求转到HttpHandler进行处理(进入到ProcessRequest方法)。这一步很重要,由这一步开始,请求才由UrlRoutingModule转到了MvcHandler里面 context.RemapHandler(httpHandler); }
//在全局配置里面写入路由规则以及默认配置 public MyRoute(string url, Dictionary <string, object> defaultPath, IMyRouteHandler routeHandler) { TemplateUrl = url; DefaultPath = defaultPath; RouteHandler = routeHandler; }