Im doing below in mvc.requestbegin processor
if (!IdentityChecker.IsUserIdentityValid(args.RequestContext.HttpContext.Request.RequestContext.HttpContext.Request) && !args.RequestContext.HttpContext.Response.IsRequestBeingRedirected)
{
args.AbortPipeline(); --// step1
args.RequestContext.HttpContext.Response.RedirectPermanent("/LogOn/SignIn", true); -- step2
}
Scenario: on browsing context item as "Home" and on above condition being true(user is not authenitcated) the page is redirected to "Logon/signin", but the Sitecore request processing for "Home" item does not end, it logs below exception:
Exception: Sitecore.Mvc.Diagnostics.ControllerCreationException
Message: Could not create controller: 'Sitecore'.
Source: Sitecore.Mvc
at Sitecore.Mvc.Controllers.SitecoreControllerFactory.CreateController(RequestContext requestContext, String controllerName)
at System.Web.Mvc.MvcHandler.ProcessRequestInit(HttpContextBase httpContext, IController& controller, IControllerFactory& factory)
at System.Web.Mvc.MvcHandler.BeginProcessRequest(HttpContextBase httpContext, AsyncCallback callback, Object state)
at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
at System.Web.HttpApplication.ExecuteStepImpl(IExecutionStep step)
at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)
Nested Exception
Exception: System.InvalidOperationException
Message: Attempt to retrieve context object of type 'Sitecore.Mvc.Presentation.PageContext' from empty stack.
Source: Sitecore.Mvc
at Sitecore.Mvc.Common.ContextService.Peek[T]()
at Sitecore.Mvc.Pipelines.MvcPipelineArgs.get_PageContext()
at Sitecore.Mvc.Pipelines.Request.CreateController.CreateItemController.CreateController(CreateControllerArgs args)
at Sitecore.Mvc.Pipelines.Request.CreateController.CreateItemController.Process(CreateControllerArgs args)
at (Object , Object[] )
at Sitecore.Pipelines.CorePipeline.Run(PipelineArgs args)
at Sitecore.Mvc.Pipelines.PipelineService.RunPipeline[TArgs](String pipelineName, TArgs args)
at Sitecore.Mvc.Pipelines.PipelineService.RunPipeline[TArgs,TResult](String pipelineName, TArgs args, Func`2 resultGetter)
at Sitecore.Mvc.Controllers.SitecoreControllerFactory.CreateSitecoreController(RequestContext requestContext, String controllerName)
at Sitecore.Mvc.Controllers.SitecoreControllerFactory.CreateController(RequestContext requestContext, String controllerName)
how should i code so that sitecore item processing for "Home" items ends, on redirection to another page and does not log any exception.
mvcrequestbegin processor code:
namespace Portal.Code.Pipelines
{
using System;
using System.Diagnostics.CodeAnalysis;
using LogOn.Authenticator;
using Sitecore.Mvc.Pipelines.Request.RequestBegin;
public class MvcRequestBeginProcessor : Sitecore.Mvc.Pipelines.Request.RequestBegin.RequestBeginProcessor
{
public override void Process(RequestBeginArgs args)
{
if (
!IdentityChecker.IsUserIdentityValid(
args.RequestContext.HttpContext.Request.RequestContext.HttpContext.Request) &&
!args.RequestContext.HttpContext.Response.IsRequestBeingRedirected)
{
args.AbortPipeline();
args.RequestContext.HttpContext.Response.Redirect("/LogOn/SignIn", true);
}
}
}
}