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);
                }
            }
        }
        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);
                }
            }
        }