public override VirtualPathData GetVirtualPath(RequestContext requestContext, RouteValueDictionary values) { object subfolderValue; if (values == null || !values.TryGetValue("subfolder", out subfolderValue)) { requestContext.RouteData.Values.TryGetValue("subfolder", out subfolderValue); } var subfolder = subfolderValue as string; if (!String.IsNullOrEmpty(subfolder)) { VirtualPathData vpd = SubfolderAppRootRoute.GetVirtualPath(requestContext, new RouteValueDictionary(new { subfolder })); vpd.Route = this; return(vpd); } if (values == null || values.Count == 0) { return(new VirtualPathData(this, string.Empty)); } return(null); }
public override RouteData GetRouteData(HttpContextBase httpContext) { string appExecutionPath = httpContext.Request.AppRelativeCurrentExecutionFilePath; if (appExecutionPath == "~/" || String.Equals(appExecutionPath, "~/default.aspx", StringComparison.OrdinalIgnoreCase)) { var appRootRouteData = new RouteData { Route = this, RouteHandler = GetHandler(), }; if (!BlogAggregationEnabled) { appRootRouteData.DataTokens.Add(PageRoute.ControlNamesKey, new[] { "homepage" }.AsEnumerable()); } return(appRootRouteData); } var blogRequest = httpContext.Items[BlogRequest.BlogRequestKey] as BlogRequest; if (blogRequest == null || String.IsNullOrEmpty(blogRequest.Subfolder)) { return(null); } RouteData routeData = SubfolderAppRootRoute.GetRouteData(httpContext) ?? SubfolderDefaultRoute.GetRouteData(httpContext); if (routeData != null) { routeData.Route = this; if (!String.Equals(blogRequest.Subfolder, routeData.GetSubfolder(), StringComparison.OrdinalIgnoreCase)) { return(null); } } return(routeData); }