public PageRequestHandler(ControllerContext controllerContext, PageRequestFlowAdapter pageRequestFlowAdapter, SiteMappedContext siteMappedContext, PageMappedContext pageMappedContext)
        {
            Contract.Requires(siteMappedContext != null);
            Contract.Requires(pageRequestFlowAdapter != null);

            this._controllerContext      = controllerContext;
            this._siteMappedContext      = siteMappedContext;
            this._pageRequestFlowAdapter = pageRequestFlowAdapter;
            this._pageMappedContext      = pageMappedContext;
        }
Beispiel #2
0
        /// <summary>
        /// 根据需要创建一个自定义的HttpContext
        /// </summary>
        /// <param name="httpContext">The HTTP context.</param>
        /// <returns></returns>
        public HttpContextBase RenewHttpContext(HttpContext httpContext, SiteMappedContext siteMappedContext)
        {
            Contract.Requires(httpContext != null);
            foreach (var item in _events)
            {
                item.BeginSiteRequest(this, new BeginSiteRequestEventArgs(httpContext, siteMappedContext));
            }
            var newHttpContext = _siteRequestFlow.RenewHttpContext(httpContext, siteMappedContext);

            return(newHttpContext);
        }
Beispiel #3
0
        /// <summary>
        /// 站点请求结束
        /// </summary>
        /// <param name="httpContext"></param>
        public void EndSiteRequest(HttpContextBase httpContext, SiteMappedContext siteMappedContext)
        {
            Contract.Requires(httpContext != null);
            Contract.Requires(siteMappedContext != null);

            foreach (var item in _events)
            {
                item.EndSiteRequest(this, new EndSiteRequestEventArgs(httpContext, siteMappedContext));
            }

            _siteRequestFlow.EndSiteRequest(httpContext, siteMappedContext);
        }
Beispiel #4
0
        /// <summary>
        /// Handle the exception
        /// </summary>
        /// <param name="httpContext">The HTTP context.</param>
        /// <param name="site">The site.</param>
        /// <param name="exception">The exception.</param>
        public bool Error(ControllerContext controllerContext, SiteMappedContext siteMappedContext, Exception exception)
        {
            Contract.Requires(controllerContext != null);
            Contract.Requires(exception != null);
            var handled = false;

            foreach (var item in _events)
            {
                var args = new ErrorEventArgs(controllerContext, siteMappedContext, exception);
                item.Error(this, args);
                if (args.ExceptionHandled == true)
                {
                    break;
                }
            }
            return(handled);
        }
Beispiel #5
0
        /// <summary>
        /// 执行Handler
        /// </summary>
        /// <param name="controllerContext">The HTTP context.</param>
        public void ExecuteRequestHandler(ControllerContext controllerContext, SiteMappedContext siteMappedContext, IRequestHandler requestHandler)
        {
            Contract.Requires(controllerContext != null);
            Contract.Requires(siteMappedContext != null);
            Contract.Requires(requestHandler != null);

            foreach (var item in _events)
            {
                item.PreExecuteRequestHandler(this, new PreExecuteRequestHandlerEventArgs(controllerContext, siteMappedContext, requestHandler));
            }

            _siteRequestFlow.ExecuteRequestHandler(controllerContext, requestHandler, siteMappedContext);

            foreach (var item in _events)
            {
                var args = new PostExecuteRequestHandlerEventArgs(controllerContext, siteMappedContext, requestHandler);
                item.PostExecuteRequestHandler(this, args);
            }
        }
Beispiel #6
0
        /// <summary>
        /// 根据需要创建一个自定义的HttpContext
        /// </summary>
        /// <param name="controllerContext">The controller context.</param>
        /// <param name="siteMappedContext">The site.</param>
        /// <returns></returns>
        public PageMappedContext MapPage(ControllerContext controllerContext, SiteMappedContext siteMappedContext)
        {
            Contract.Requires(controllerContext != null);
            Contract.Requires(siteMappedContext != null);
            foreach (var item in _events)
            {
                item.PreMapPage(this, new PreMapPageEventArgs(controllerContext, siteMappedContext));
            }
            var mappedContext = _pageRequestFlow.MapPage(controllerContext, siteMappedContext);

            foreach (var item in _events)
            {
                var args = new PostMapPageEventArgs(controllerContext, siteMappedContext, mappedContext);
                item.PostMapPage(this, args);
                mappedContext = args.PageMappedContext;
            }

            return(mappedContext);
        }
Beispiel #7
0
        /// <summary>
        /// 创建Page_Context
        /// </summary>
        /// <param name="controllerContext"></param>
        /// <param name="site"></param>
        /// <param name="page"></param>
        /// <returns></returns>
        public Page_Context CreatePageContext(ControllerContext controllerContext, SiteMappedContext siteMappedContext, PageMappedContext mappedContext)
        {
            Contract.Requires(controllerContext != null);
            Contract.Requires(siteMappedContext != null);
            Contract.Requires(mappedContext != null);

            foreach (var item in _events)
            {
                item.PreCreatePageContext(this, new PreCreatePageContextEventArgs(controllerContext, siteMappedContext, mappedContext));
            }
            var page_context = _pageRequestFlow.CreatePageContext(controllerContext, siteMappedContext, mappedContext);

            foreach (var item in _events)
            {
                var args = new PostCreatePageContextEventArgs(page_context);
                item.PostCreatePageContext(this, args);
                page_context = args.Page_Context;
            }

            return(page_context);
        }
Beispiel #8
0
        /// <summary>
        /// 查找处理请求的Handler
        /// 比如:PageRequestHandler
        /// </summary>
        /// <param name="controllerContext">The HTTP context.</param>
        /// <returns></returns>
        public IRequestHandler MapRequestHandler(ControllerContext controllerContext, SiteMappedContext siteMappedContext)
        {
            Contract.Requires(controllerContext != null);
            Contract.Requires(siteMappedContext != null);

            foreach (var item in _events)
            {
                item.PreMapRequestHandler(this, new PreMapRequestHandlerEventArgs(controllerContext, siteMappedContext));
            }

            var requestHandler = _siteRequestFlow.MapRequestHandler(controllerContext, siteMappedContext);

            foreach (var item in _events)
            {
                item.PostMapRequestHandler(this, new PostMapRequestHandlerEventArgs(controllerContext, siteMappedContext, requestHandler));
            }
            return(requestHandler);
        }
 protected override void OnActionExecuting(ActionExecutingContext filterContext)
 {
     base.OnActionExecuting(filterContext);
     _siteMappedContext = ((FrontHttpContextWrapper)this.ControllerContext.HttpContext).SiteMappedContext;
 }
 public NoPageRequestHandler(ControllerContext controllerContext, SiteMappedContext siteMappedContext, ISiteFileProvider siteFileProvider)
 {
     this._controllerContext = controllerContext;
     this._siteMappedContext = siteMappedContext;
     this._siteFileProvider  = siteFileProvider;
 }
Beispiel #11
0
 public void EndSiteRequest(System.Web.HttpContextBase httpContext, SiteMappedContext siteMappedContext)
 {
     //end site request
 }
Beispiel #12
0
 public void ExecuteRequestHandler(System.Web.Mvc.ControllerContext controllerContext, IRequestHandler requestHandler, SiteMappedContext siteMappedContext)
 {
     requestHandler.ExecuteRequest();
 }
Beispiel #13
0
 public IRequestHandler MapRequestHandler(System.Web.Mvc.ControllerContext controllerContext, SiteMappedContext siteMappedContext)
 {
     if (siteMappedContext == null)
     {
         return(EngineContext.Current.Resolve <NoSiteRequestHandler>(new Parameter("controllerContext", controllerContext)));
     }
     else
     {
         var pageMappedContext = _pageRequestFlowAdapter.MapPage(controllerContext, siteMappedContext);
         if (pageMappedContext != null)
         {
             return(new PageRequestHandler(controllerContext, _pageRequestFlowAdapter, siteMappedContext, pageMappedContext));
         }
         else
         {
             return(EngineContext.Current.Resolve <NoPageRequestHandler>(new Parameter("controllerContext", controllerContext), new Parameter("siteMappedContext", siteMappedContext)));
         }
     }
 }
Beispiel #14
0
 public System.Web.HttpContextBase RenewHttpContext(System.Web.HttpContext httpContext, SiteMappedContext siteMappedContext)
 {
     return(new FrontHttpContextWrapper(httpContext, siteMappedContext));
 }