Пример #1
0
        public ActionResult Index()
        {
            logger.Info("into index page");
            var na = IocContainerManager.Resolve <IPerson>().GetNames();

            Response.Write(na);
            Response.Write(person.GetNames());

            var ss = IocContainerManager.ResolveByEnumKey <PersonType, IPerson>(PersonType.Worker);

            Response.Write("/r/n ss=" + ss.GetNames() + "/r/n");
            IIndex <PersonType, IPerson> IIndex = IocContainerManager.Container.Resolve <IIndex <PersonType, IPerson> >();
            IPerson p = IIndex[PersonType.Worker];

            Response.Write(p.GetNames());

            string str = "";
            var    t   = Task.Factory.StartNew(() =>
            {
                str = IocContainerManager.Resolve <IPerson>().GetNames();
            });

            //  t.Start();
            t.Wait();

            //Task.WaitAll();
            return(View());
        }
Пример #2
0
        public static void RegistAll()
        {
            var iocBuilder = new Autofac.ContainerBuilder();

            iocBuilder.RegisterControllers(Assembly.GetExecutingAssembly());
            iocBuilder.RegisterApiControllers(Assembly.GetExecutingAssembly());
            //Type baseType = typeof(IH2FBase);
            var iInterfaces = Assembly.Load("H2F.TEST.Interface");
            var implement   = Assembly.Load("H2F.TEST.Implement");

            iocBuilder.RegisterAssemblyTypes(iInterfaces, implement).AsImplementedInterfaces();

            iocBuilder.RegisterType <Student>().As <IPerson>();
            iocBuilder.RegisterType <Worker>().Keyed <IPerson>(PersonType.Worker);

            iocBuilder.RegisterType <Student>().Keyed <IPerson>(PersonType.Student);


            iocBuilder.RegisterType <Log4net>().As <ILogger>();
            var config = GlobalConfiguration.Configuration;

            iocBuilder.RegisterWebApiFilterProvider(config);
            IContainer iocContainer = iocBuilder.Build();

            config.DependencyResolver = new AutofacWebApiDependencyResolver(iocContainer);
            System.Web.Mvc.DependencyResolver.SetResolver(new AutofacDependencyResolver(iocContainer));

            IocContainerManager.SetContanier(iocContainer);
        }
Пример #3
0
        public void Init(HttpApplication context)
        {
            context.Error += (object sender, System.EventArgs e) =>
            {
                var container = IocContainerManager.GetInstance();

                if (((container != null)) & (HttpContext.Current.Items["PerRequestScope"] == null))
                {
                    var scope = container.BeginLifetimeScope();
                    HttpContext.Current.Items["PerRequestScope"] = scope;
                }

                var       Request      = context.Request;
                var       Response     = context.Response;
                Exception currentError = context.Server.GetLastError();
                var       bllErrorInfo = new ErrorInfoService();
                var       errorInfo    = new ErrorInfo();
                //if ((SessionManager.GetUser() != null))
                //{
                //    errorInfo.UID = SessionManager.GetUser().AccountID;
                //}
                errorInfo.ErrorMsg = currentError.Message.ToString();

                if (currentError.GetType().Name == "SysDbException")
                {
                    SysDbException ex = (SysDbException)currentError;
                    errorInfo.ExecSql   = ex.SqlInfo;
                    errorInfo.ErrorCode = 1;
                }

                errorInfo.ProgramID  = "0";
                errorInfo.Url        = Request.Url.ToString();
                errorInfo.StackTrace = currentError.ToString();
                StringBuilder sb = new StringBuilder();
                Response.Clear();
                sb.Append("<h2>系统错误:</h2><hr/>系统发生错误,错误编号为:");

                if (!errorInfo.Url.Contains("/Error"))
                {
                    sb.Append(bllErrorInfo.Add(errorInfo));
                }
                //todo对于已记录的无需再记录
                sb.Append("。该信息已被系统记录,请稍后重试或与系统管理员联系。<br/>错误地址:");
                sb.Append(Request.Url.ToString());
                sb.Append("<br/>错误信息: <font class='ErrorMessage'>");
                sb.Append(currentError.Message.ToString());
                sb.Append("</font><hr/><b>Stack Trace:</b><br/>");
                sb.Append(currentError.ToString());
                Response.Write(sb.ToString());
                Response.End();
                context.Server.ClearError();
            };
        }
Пример #4
0
        //protected virtual void LogInfo(string userId, string infoMsg)
        //{
        //    var errorInfo = new ErrorInfo();
        //    errorInfo.ErrorMsg = infoMsg;
        //    errorInfo.RunningTime = System.DateTime.Now;
        //    errorInfo.Url = HttpContext.Request.Path.ToString();
        //    _errorInfoService.Add(errorInfo);
        //}

        protected override IAsyncResult BeginExecuteCore(AsyncCallback callback, object state)
        {
            //todo完善
            //创建基于http request的scope用于显式的依赖注入,eg RespositoryFactory CouDbContext的构建
            var container = IocContainerManager.GetInstance();

            if (container != null)
            {
                var scope = container.BeginLifetimeScope();
                HttpContext.Items["PerRequestScope"] = scope;
            }

            Utils.InitializeCulture();
            return(base.BeginExecuteCore(callback, state));
        }
Пример #5
0
        /// <summary>
        /// 引发 <see cref="E:System.Web.UI.Control.Init" /> 事件以对页进行初始化。
        /// </summary>
        /// <param name="e">包含事件数据的 <see cref="T:System.EventArgs" />。</param>

        protected override void OnInit(EventArgs e)
        {
            //创建基于http request的scope用于显式的依赖注入,eg RespositoryFactory CouDbContext的构建
            var container = IocContainerManager.GetInstance();

            if ((container != null))
            {
                dynamic scope = container.BeginLifetimeScope();
                HttpContext.Current.Items["PerRequestScope"] = scope;
            }

            base.OnInit(e);
            Load  += new EventHandler(PageBase_Load);
            Error += new EventHandler(PageBase_Error);
        }
Пример #6
0
 // GET api/<controller>/5
 public string Get(int id)
 {
     return(IocContainerManager.ResolveByEnumKey <PersonType, IPerson>(PersonType.Worker).GetNames());
 }
Пример #7
0
        // GET api/<controller>
        public string Get()
        {
            Person p = new Person(IocContainerManager.Resolve <IPerson>());

            return(person.GetNames());
        }