/// <inheritdoc/>
        protected override void InitializeRouteParameters(MvcProxyBase proxyControl)
        {
            RouteHelper.SetUrlParametersResolved(false);

            var originalContext = proxyControl.Context.Request.RequestContext ?? proxyControl.Page.GetRequestContext();

            var paramsMapper = this.GetDefaultParamsMapper(proxyControl.Controller);
            if (paramsMapper != null)
            {
                var requestContext = proxyControl.RequestContext;
                var originalParams = MvcRequestContextBuilder.GetRouteParams(originalContext);
                var controllerName = SitefinityViewEngine.GetControllerName(proxyControl.Controller);
                requestContext.RouteData.Values[DynamicUrlParamActionInvoker.ControllerNameKey] = controllerName;

                paramsMapper.ResolveUrlParams(originalParams, requestContext);
                proxyControl.Controller.TempData.Add("IsInPureMode", proxyControl.IsInPureMode);

                if (!proxyControl.ContentTypeName.IsNullOrEmpty())
                    proxyControl.Controller.RouteData.Values.Add("contentTypeName", proxyControl.ContentTypeName);
            }
            else
            {
                base.InitializeRouteParameters(proxyControl);
            }
        }
        /// <summary>
        /// Logs exceptions thrown by the invocation of <see cref="ControllerActionInvoker"/>
        /// </summary>
        /// <param name="proxyControl">The proxy control.</param>
        protected override void ExecuteController(MvcProxyBase proxyControl)
        {
            var controller = proxyControl.GetController();
            if (proxyControl.IsIndexingMode() && controller.GetIndexRenderMode() == IndexRenderModes.NoOutput)
                return;

            try
            {
                this.TryLoadTempData(controller);
                base.ExecuteController(proxyControl);
            }
            catch (Exception ex)
            {
                if (!(ex is ThreadAbortException))
                    if (Exceptions.HandleException(ex, ExceptionPolicyName.IgnoreExceptions))
                        throw;

                this.Context.Response.Clear();

                if (this.ShouldDisplayErrors())
                    this.Context.Response.Write(Res.Get<InfrastructureResources>().ErrorExecutingController);
            }
            finally
            {
                this.TrySaveTempData(controller);
            }
        }
Ejemplo n.º 3
0
        protected override bool ShouldProcessRequest(MvcProxyBase proxyControl)
        {
            var shouldProcess = base.ShouldProcessRequest(proxyControl);

            var configManager   = ConfigManager.GetManager();
            var toolboxesConfig = configManager.GetSection <ToolboxesConfig>();

            shouldProcess &= toolboxesConfig != null;

            return(shouldProcess);
        }
        protected override void ExecuteController(MvcProxyBase proxyControl)
        {
            Stopwatch watch = Stopwatch.StartNew();

            logger.Trace($"Executing controller {proxyControl?.ControllerName}");
            try
            {
                base.ExecuteController(proxyControl);
            }
            finally
            {
                watch.Stop();
                logger.Trace($"Completed executing controller {proxyControl?.ControllerName} and spent {watch.Elapsed} on it.");
            }
        }
Ejemplo n.º 5
0
        /// <summary>
        /// Logs exceptions thrown by the invocation of <see cref="ControllerActionInvoker"/>
        /// </summary>
        /// <param name="proxyControl">The proxy control.</param>
        protected override void ExecuteController(MvcProxyBase proxyControl)
        {
            try
            {
                base.ExecuteController(proxyControl);
            }
            catch (Exception ex)
            {
                if (Exceptions.HandleException(ex, ExceptionPolicyName.IgnoreExceptions))
                {
                    throw;
                }

                proxyControl.Context.Response.Clear();
            }
        }
Ejemplo n.º 6
0
        private void SetControllerRouteParam(MvcProxyBase proxyControl)
        {
            var requestContext = proxyControl.RequestContext;

            string controllerName;
            var    widgetProxy = proxyControl as MvcWidgetProxy;

            if (widgetProxy != null && !string.IsNullOrEmpty(widgetProxy.WidgetName))
            {
                controllerName = widgetProxy.WidgetName;
            }
            else
            {
                controllerName = SitefinityViewEngine.GetControllerName(proxyControl.GetController());
            }

            requestContext.RouteData.Values[FeatherActionInvoker.ControllerNameKey] = controllerName;
        }
Ejemplo n.º 7
0
        protected override void ExecuteController(MvcProxyBase proxyControl)
        {
            var controller = proxyControl.GetController();
            if (proxyControl.IsIndexingMode() && controller.GetIndexRenderMode() == IndexRenderModes.NoOutput)
                return;

            try
            {
                this.TryLoadTempData(controller);
                base.ExecuteController(proxyControl);
            }
            catch (Exception ex)
            {
                this.HandleControllerException(ex);
            }
            finally
            {
                this.TrySaveTempData(controller);
            }
        }
Ejemplo n.º 8
0
        /// <summary>
        /// Logs exceptions thrown by the invocation of <see cref="ControllerActionInvoker"/>
        /// </summary>
        /// <param name="proxyControl">The proxy control.</param>
        protected override void ExecuteController(MvcProxyBase proxyControl)
        {
            try
            {
                base.ExecuteController(proxyControl);
            }
            catch (Exception ex)
            {
                if (Exceptions.HandleException(ex, ExceptionPolicyName.IgnoreExceptions))
                {
                    throw;
                }

                proxyControl.Context.Response.Clear();

                if (this.ShouldDisplayErrors())
                {
                    proxyControl.Context.Response.Write(Res.Get <InfrastructureResources>().ErrorExecutingController);
                }
            }
        }
        /// <inheritdoc/>
        protected override void InitializeRouteParameters(MvcProxyBase proxyControl)
        {
            var originalContext = this.Context.Request.RequestContext ?? proxyControl.Page.GetRequestContext();

            this.SetControllerRouteParam(proxyControl);

            var controller = proxyControl.GetController();

            if (!FrontendManager.AttributeRouting.HasAttributeRouting(controller.RouteData))
            {
                var paramsMapper = this.GetDefaultParamsMapper(controller);
                if (paramsMapper != null)
                {
                    var originalParams = MvcRequestContextBuilder.GetRouteParams(originalContext);
                    var requestContext = proxyControl.RequestContext;

                    paramsMapper.ResolveUrlParams(originalParams, requestContext);

                    if (!proxyControl.ContentTypeName.IsNullOrEmpty())
                    {
                        controller.RouteData.Values.Add("contentTypeName", proxyControl.ContentTypeName);
                    }
                }
                else
                {
                    proxyControl.RequestContext.RouteData.Values.Remove(DynamicUrlParamActionInvoker.ControllerNameKey);
                    base.InitializeRouteParameters(proxyControl);
                }
            }
            else
            {
                if (FrontendManager.AttributeRouting.UpdateRouteData(this.Context, controller.RouteData))
                {
                    //// Attribute routing was successful.
                    RouteHelper.SetUrlParametersResolved();
                }
            }

            controller.TempData.Add("IsInPureMode", proxyControl.IsInPureMode);
        }
Ejemplo n.º 10
0
        protected override void ExecuteController(MvcProxyBase proxyControl)
        {
            var controller = proxyControl.GetController();

            if (proxyControl.IsIndexingMode() && controller.GetIndexRenderMode() == IndexRenderModes.NoOutput)
            {
                return;
            }

            try
            {
                this.TryLoadTempData(controller);
                base.ExecuteController(proxyControl);
            }
            catch (Exception ex)
            {
                this.HandleControllerException(ex);
            }
            finally
            {
                this.TrySaveTempData(controller);
            }
        }
        /// <summary>
        /// Logs exceptions thrown by the invocation of <see cref="ControllerActionInvoker"/>
        /// </summary>
        /// <param name="proxyControl">The proxy control.</param>
        protected override void ExecuteController(MvcProxyBase proxyControl)
        {
            try
            {
                this.TryLoadTempData(proxyControl.Controller);
                base.ExecuteController(proxyControl);
            }
            catch (Exception ex)
            {
                if (!(ex is ThreadAbortException))
                    if (Exceptions.HandleException(ex, ExceptionPolicyName.IgnoreExceptions))
                        throw;

                proxyControl.Context.Response.Clear();

                if (this.ShouldDisplayErrors())
                    proxyControl.Context.Response.Write(Res.Get<InfrastructureResources>().ErrorExecutingController);
            }
            finally
            {
                this.TrySaveTempData(proxyControl.Controller);
            }
        }
        /// <summary>
        /// Logs exceptions thrown by the invocation of <see cref="ControllerActionInvoker"/>
        /// </summary>
        /// <param name="proxyControl">The proxy control.</param>
        protected override void ExecuteController(MvcProxyBase proxyControl)
        {
            var controller = proxyControl.GetController();

            if (proxyControl.IsIndexingMode() && controller.GetIndexRenderMode() == IndexRenderModes.NoOutput)
            {
                return;
            }

            try
            {
                this.TryLoadTempData(controller);
                base.ExecuteController(proxyControl);
            }
            catch (Exception ex)
            {
                if (!(ex is ThreadAbortException))
                {
                    if (Exceptions.HandleException(ex, ExceptionPolicyName.IgnoreExceptions))
                    {
                        throw;
                    }
                }

                this.Context.Response.Clear();

                if (this.ShouldDisplayErrors())
                {
                    this.Context.Response.Write(Res.Get <InfrastructureResources>().ErrorExecutingController);
                }
            }
            finally
            {
                this.TrySaveTempData(controller);
            }
        }
        private void SetControllerRouteParam(MvcProxyBase proxyControl)
        {
            var requestContext = proxyControl.RequestContext;

            string controllerName;
            var widgetProxy = proxyControl as MvcWidgetProxy;
            if (widgetProxy != null && !string.IsNullOrEmpty(widgetProxy.WidgetName))
            {
                controllerName = widgetProxy.WidgetName;
            }
            else
            {
                controllerName = SitefinityViewEngine.GetControllerName(proxyControl.Controller);
            }

            requestContext.RouteData.Values[DynamicUrlParamActionInvoker.ControllerNameKey] = controllerName;
        }
        protected override bool ShouldProcessRequest(MvcProxyBase proxyControl)
        {
            var shouldProcess = base.ShouldProcessRequest(proxyControl);

            var toolboxesConfig = Config.Get<ToolboxesConfig>();
            shouldProcess &= toolboxesConfig != null;

            return shouldProcess;
        }
        /// <inheritdoc/>
        protected override void InitializeRouteParameters(MvcProxyBase proxyControl)
        {
            var originalContext = this.Context.Request.RequestContext ?? proxyControl.Page.GetRequestContext();

            this.SetControllerRouteParam(proxyControl);

            var controller = proxyControl.GetController();

            if (!FrontendManager.AttributeRouting.HasAttributeRouting(controller.RouteData))
            {
                var paramsMapper = this.GetDefaultParamsMapper(controller);
                if (paramsMapper != null)
                {
                    var originalParams = MvcRequestContextBuilder.GetRouteParams(originalContext);
                    var requestContext = proxyControl.RequestContext;

                    var modelProperty = controller.GetType().GetProperty("Model");
                    if (modelProperty != null)
                    {
                        var model = modelProperty.GetValue(controller, null);
                        var modelUrlKeyProperty  = model == null ? null : model.GetType().GetProperty("UrlKeyPrefix");
                        var modelUrlKeyPrefix    = modelUrlKeyProperty == null ? null : (string)modelUrlKeyProperty.GetValue(model, null);
                        var expectedUrlKeyPrefix = string.IsNullOrEmpty(modelUrlKeyPrefix) ? null : "!" + modelUrlKeyPrefix;
                        var currentUrlKeyPrefix  = originalParams == null ? null : originalParams.FirstOrDefault(p => p.StartsWith("!", StringComparison.OrdinalIgnoreCase));

                        if (expectedUrlKeyPrefix == currentUrlKeyPrefix)
                        {
                            paramsMapper.ResolveUrlParams(originalParams, requestContext, modelUrlKeyPrefix);
                        }
                        else
                        {
                            this.GetPrefixParamsMapper(controller)?.ResolveUrlParams(originalParams, requestContext);
                            RouteHelper.SetUrlParametersResolved();
                        }
                    }
                    else
                    {
                        paramsMapper.ResolveUrlParams(originalParams, requestContext);
                    }

                    if (!proxyControl.ContentTypeName.IsNullOrEmpty())
                    {
                        controller.RouteData.Values.Add("contentTypeName", proxyControl.ContentTypeName);
                    }
                }
                else
                {
                    proxyControl.RequestContext.RouteData.Values.Remove(FeatherActionInvoker.ControllerNameKey);
                    base.InitializeRouteParameters(proxyControl);
                }
            }
            else
            {
                if (this.ShouldProcessRequest(controller))
                {
                    // in indexing mode, we only request pages, therefore there in no need to update data for relative routes
                    if (!proxyControl.IsIndexingMode())
                    {
                        if (FrontendManager.AttributeRouting.UpdateRouteData(this.Context, controller.RouteData))
                        {
                            RouteHelper.SetUrlParametersResolved();
                        }
                    }
                    else
                    {
                        //// Attribute routing was successful.
                        RouteHelper.SetUrlParametersResolved();
                    }
                }
            }
        }
Ejemplo n.º 16
0
        /// <inheritdoc/>
        protected override void InitializeRouteParameters(MvcProxyBase proxyControl)
        {
            var originalContext = this.Context.Request.RequestContext ?? proxyControl.Page.GetRequestContext();

            this.SetControllerRouteParam(proxyControl);

            var controller = proxyControl.GetController();

            if (!FrontendManager.AttributeRouting.HasAttributeRouting(controller.RouteData))
            {
                var paramsMapper = this.GetDefaultParamsMapper(controller);
                if (paramsMapper != null)
                {
                    var originalParams = MvcRequestContextBuilder.GetRouteParams(originalContext);
                    var requestContext = proxyControl.RequestContext;

                    paramsMapper.ResolveUrlParams(originalParams, requestContext);

                    if (!proxyControl.ContentTypeName.IsNullOrEmpty())
                        controller.RouteData.Values.Add("contentTypeName", proxyControl.ContentTypeName);
                }
                else
                {
                    proxyControl.RequestContext.RouteData.Values.Remove(FeatherActionInvoker.ControllerNameKey);
                    base.InitializeRouteParameters(proxyControl);
                }
            }
            else
            {
                if (FrontendManager.AttributeRouting.UpdateRouteData(this.Context, controller.RouteData))
                {
                    //// Attribute routing was successful.
                    RouteHelper.SetUrlParametersResolved();
                }
            }

            controller.TempData.Add("IsInPureMode", proxyControl.IsInPureMode);
        }