BlackLinks.BlackApplication.ProcessRequest C# (CSharp) Method

ProcessRequest() private method

private ProcessRequest ( BlackRequest request ) : void
request BlackRequest
return void
        internal void ProcessRequest(BlackRequest request)
        {
            ensureInitialized();
            BlackContext context = new BlackContext(this,request.Uri);
            context.Request = request;

            try
            {
                Routing.RouteEvaluation evalResult = null;
                //All evaluation and Pre-Execution(on dynamic routing discovery) exceptions will be popped up to root error routing(if present) or BlackLinkx default.
                    evalResult = this.Routes.Evaluate(context);
                    if(evalResult.Route == null)
                    {
                        Console.Error.WriteLine("Route evaluation returned nothing to show");
                    }
                    else
                    {
                        Console.Error.WriteLine("Route evaluation returned {0} as Controller and Action {1}",evalResult.Route.ControllerType.FullName,evalResult.Route.ActionName);
                    }

                if(evalResult == null)
                    evalResult = new Routing.RouteEvaluation();

                if(evalResult.Route != null)
                {
                    try
                    {
                        var action = evalResult.InstantiatedAction != null ? evalResult.InstantiatedAction :
                            context.ActivateAction(evalResult.Route);
                        Console.Error.WriteLine("Executing Action");
                        action.Execute(ActionExecuteType.Complete);
                        Console.Error.WriteLine("Action next phase is: {0}",action.NextPhase);
                    }
                    catch(Exception ex)
                    {
                        context.LastError = ex;
                        executeErrorAction(evalResult.Route,context);
                    }
                }
            }catch(Exception ex)
            {
                context.LastError = ex;
                if(this.Routes.RootRoute.ErrorRoute == null)
                {
                    context.writeDefaultErrorPage();
                    return;
                }
                else
                {
                    executeErrorAction(this.Routes.RootRoute,context);
                }
            }
        }