Пример #1
0
        public virtual void ProcessRequest(HttpContext context)
        {
            //写入MVC的版本到HttpHeader里面
            //AddVersionHeader(httpContext);
            //移除参数
            //RemoveOptionalRoutingParameters();

            //1.从当前的RouteData里面得到请求的控制器名称
            string controllerName = MyRouteData.RouteValue["controller"].ToString();

            //2.得到控制器工厂
            IControllerFactory factory = new MyControllerFactory();

            //3.通过默认控制器工厂得到当前请求的控制器对象
            IController controller = factory.CreateController(MyRouteData, controllerName);

            if (controller == null)
            {
                controller = factory.CreateController(MyRouteData, "Home");
            }

            try
            {
                //4.执行控制器的Action
                controller.Execute(MyRouteData);
            }
            catch (Exception e)
            {
            }
            finally
            {
                //5.释放当前的控制器对象
                factory.ReleaseController(controller);
            }
        }
Пример #2
0
        protected void Application_Start()
        {
            AreaRegistration.RegisterAllAreas();
            FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
            RouteConfig.RegisterRoutes(RouteTable.Routes);
            BundleConfig.RegisterBundles(BundleTable.Bundles);
            var myfactory = new MyControllerFactory();

            ControllerBuilder.Current.SetControllerFactory(myfactory);
        }
        public static IControllerFactory GetControllerFactory()
        {
            var BL_AccountClassTypeName = ConfigurationManager.AppSettings["AccountKey"];
                var BL_AccountClassType = Type.GetType(BL_AccountClassTypeName);
                var accountInstance = Activator.CreateInstance(BL_AccountClassType);

                var BL_ProofReadingClassTypeName = ConfigurationManager.AppSettings["ProofReadingKey"];
                var BL_ProofReadingType = Type.GetType(BL_ProofReadingClassTypeName);
                var prInstance = Activator.CreateInstance(BL_ProofReadingType);

                var BL_FormattingClassTypeName = ConfigurationManager.AppSettings["FormattingKey"];
                var BL_FormattingType = Type.GetType(BL_FormattingClassTypeName);
                var frInstance = Activator.CreateInstance(BL_FormattingType);

                var BL_IllustrationClassTypeName = ConfigurationManager.AppSettings["IllustrationKey"];
                var BL_IllustrationType = Type.GetType(BL_IllustrationClassTypeName);
                var irInstance = Activator.CreateInstance(BL_IllustrationType);

                var BL_TemplateClassTypeName = ConfigurationManager.AppSettings["TemplateKey"];
                var BL_TemplateType = Type.GetType(BL_TemplateClassTypeName);
                var trInstance = Activator.CreateInstance(BL_TemplateType);

                var BL_TranslationClassTypeName = ConfigurationManager.AppSettings["TranslationKey"];
                var BL_TranslationType = Type.GetType(BL_TranslationClassTypeName);
                var trnsInstance = Activator.CreateInstance(BL_TranslationType);

                var BL_CoverDesignClassTypeName = ConfigurationManager.AppSettings["CoverDesignKey"];
                var BL_CoverDesignType = Type.GetType(BL_CoverDesignClassTypeName);
                var crInstance = Activator.CreateInstance(BL_CoverDesignType);

                var BL_ProductClassTypeName = ConfigurationManager.AppSettings["ProductKey"];
                var BL_ProductType = Type.GetType(BL_ProductClassTypeName);
                var pdInstance = Activator.CreateInstance(BL_ProductType);

                var BL_ProductNewClassTypeName = ConfigurationManager.AppSettings["ProductNewKey"];
                var BL_ProductNewType = Type.GetType(BL_ProductNewClassTypeName);
                var pdInstanceNew = Activator.CreateInstance(BL_ProductNewType);

                var BL_Services = ConfigurationManager.AppSettings["Serviceskey"];
                var BL_Servicetype = Type.GetType(BL_Services);
                var pdService = Activator.CreateInstance(BL_Servicetype);

                IControllerFactory factory = new MyControllerFactory(accountInstance as IBLAccounts, prInstance as IBLProofReading, frInstance as IBLFormatting, irInstance as IBLIllustration, trInstance as IBLTemplate, trnsInstance as IBLTranslation, crInstance as IBLCoverDesign, pdInstance as IBLProducts, pdInstanceNew as IBLProductsNew, pdService as IBLServices);
                return factory;
        }