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()); }
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); }
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(); }; }
//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)); }
/// <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); }
// GET api/<controller>/5 public string Get(int id) { return(IocContainerManager.ResolveByEnumKey <PersonType, IPerson>(PersonType.Worker).GetNames()); }
// GET api/<controller> public string Get() { Person p = new Person(IocContainerManager.Resolve <IPerson>()); return(person.GetNames()); }