예제 #1
0
        /// <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;
        }
예제 #2
0
        /// <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);
        }