protected void Application_Start(object sender, EventArgs e) { #region Signalr var builder = new ContainerBuilder(); builder.RegisterHubs(Assembly.GetExecutingAssembly()).PropertiesAutowired(); builder.RegisterType <DebugLogger>().As <IHubLogger>(); var container = builder.Build(); var resolver = new AutofacDependencyResolver(container); GlobalHost.HubPipeline.AddModule(new LoggingPipelineModule(resolver.Resolve <IHubLogger>())); GlobalHost.HubPipeline.AddModule(new ErrorHandlingPipelineModule(resolver.Resolve <IHubLogger>())); var authorizer = new HubAuthorizeAttribute(); var module = new AuthorizeModule(authorizer, authorizer); GlobalHost.HubPipeline.AddModule(module); GlobalHost.HubPipeline.RequireAuthentication(); GlobalHost.DependencyResolver = new AutofacDependencyResolver(container); #endregion AutoMapperUtil.Execute(); //var aTimer = new System.Timers.Timer(); //aTimer.Elapsed += aTimer_Elapsed; //aTimer.Interval = 20000; //aTimer.Enabled = true; ValueProviderFactories.Factories.Remove(ValueProviderFactories.Factories.OfType <JsonValueProviderFactory>().FirstOrDefault()); ValueProviderFactories.Factories.Add(new JsonNetValueProviderFactory()); AreaRegistration.RegisterAllAreas(); FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters); RouteConfig.RegisterRoutes(RouteTable.Routes); ModelBundle.RegisterBindles(ModelBinders.Binders); ConsulUtil.StartWatchConsulServices(); }
/// <summary> /// 构建服务并设置SignalR平台的Resolver /// </summary> /// <param name="services">服务映射信息集合</param> /// <param name="assemblies">要检索的程序集集合</param> protected override IServiceProvider BuildAndSetResolver(IServiceCollection services, Assembly[] assemblies) { ContainerBuilder builder = new ContainerBuilder(); builder.RegisterHubs().AsSelf().PropertiesAutowired(); builder.Populate(services); IContainer container = builder.Build(); IDependencyResolver resolver = new AutofacDependencyResolver(container); GlobalHost.DependencyResolver = resolver; return(resolver.Resolve <IServiceProvider>()); }
/// <summary> /// 构建服务并设置SignalR平台的Resolver /// </summary> /// <param name="services">服务映射信息集合</param> /// <param name="assemblies">要检索的程序集集合</param> protected override IServiceProvider BuildAndSetResolver(IServiceCollection services, Assembly[] assemblies) { ContainerBuilder builder = new ContainerBuilder(); builder.RegisterHubs(assemblies).AsSelf().PropertiesAutowired(); builder.RegisterLifetimeHubManager(); builder.Populate(services); IContainer container = builder.Build(); IDependencyResolver resolver = new AutofacDependencyResolver(container); GlobalHost.DependencyResolver = resolver; SignalRIocResolver.LifetimeResolveFunc = type => { ILifetimeScope scope = CallContext.LogicalGetData(LifetimeHubManager.LifetimeScopeKey) as ILifetimeScope; if (scope == null) { return(null); } return(scope.ResolveOptional(type)); }; return(resolver.Resolve <IServiceProvider>()); }
public void Run() { var builder = new ContainerBuilder(); ExecuteRegistrations(builder); var container = builder.Build(); _webApp = WebApp.Start(container.Resolve <IUrlProvider>().BackplaneUrl, app => { app.UseWelcomePage("/"); var config = new HttpConfiguration { DependencyResolver = new AutofacWebApiDependencyResolver(container), IncludeErrorDetailPolicy = IncludeErrorDetailPolicy.Always }; config.MapHttpAttributeRoutes(); app.UseWebApi(config); var resolver = new AutofacDependencyResolver(container); #region signalr dance to enable hub constructor DI var connectionManager = resolver.Resolve <IConnectionManager>(); var updateBuilder = new ContainerBuilder(); updateBuilder.RegisterInstance(connectionManager).As <IConnectionManager>(); updateBuilder.Update(container.ComponentRegistry); #endregion app.MapSignalR(new HubConfiguration { Resolver = resolver, EnableDetailedErrors = true }); }); Observable.Interval(TimeSpan.FromSeconds(1)) .Subscribe(_ => container.Resolve <BackplaneController>().BroadcastTokenAvailabilty()); }