/// <summary> /// 当在派生类中重写时,会返回有关请求的路由信息。 /// </summary> /// <returns> /// 一个对象,包含路由定义的值(如果该路由与当前请求匹配)或 null(如果该路由与请求不匹配)。 /// </returns> /// <param name="httpContext">一个对象,封装有关 HTTP 请求的信息。</param> public override RouteData GetRouteData(HttpContextBase httpContext) { //根据Http上下文定位具体的租户外壳设置。 var settings = _runningShellTable.Match(httpContext); if (settings == null || settings.Name != _shellSettings.Name) return null; var effectiveHttpContext = httpContext; if (_urlPrefix != null) effectiveHttpContext = new UrlPrefixAdjustedHttpContext(httpContext, _urlPrefix); var routeData = _route.GetRouteData(effectiveHttpContext); if (routeData == null) return null; routeData.RouteHandler = new RouteHandler(_workContextAccessor, routeData.RouteHandler, SessionState); routeData.DataTokens["IWorkContextAccessor"] = _workContextAccessor; if (IsHttpRoute) { routeData.Values["IWorkContextAccessor"] = _workContextAccessor; // for WebApi } return routeData; }
/// <summary> /// 当在派生类中重写时,会返回有关请求的路由信息。 /// </summary> /// <returns> /// 一个对象,包含路由定义的值(如果该路由与当前请求匹配)或 null(如果该路由与请求不匹配)。 /// </returns> /// <param name="httpContext">一个对象,封装有关 HTTP 请求的信息。</param> public override RouteData GetRouteData(HttpContextBase httpContext) { //根据Http上下文定位具体的租户外壳设置。 var settings = _runningShellTable.Match(httpContext); if (settings == null || settings.Name != _shellSettings.Name) { return(null); } var effectiveHttpContext = httpContext; if (_urlPrefix != null) { effectiveHttpContext = new UrlPrefixAdjustedHttpContext(httpContext, _urlPrefix); } var routeData = _route.GetRouteData(effectiveHttpContext); if (routeData == null) { return(null); } routeData.RouteHandler = new RouteHandler(_workContextAccessor, routeData.RouteHandler, SessionState); routeData.DataTokens["IWorkContextAccessor"] = _workContextAccessor; if (IsHttpRoute) { routeData.Values["IWorkContextAccessor"] = _workContextAccessor; // for WebApi } return(routeData); }