コード例 #1
0
        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();
        }
コード例 #2
0
        /// <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>());
        }
コード例 #3
0
        /// <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>());
        }
コード例 #4
0
        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());
        }