public void Configuration(IAppBuilder app) { // Loads the config from our App.config XmlConfigurator.Configure(); // MassTransit to use Log4Net Log4NetLogger.Use(); var container = IocConfig.RegisterDependencies(); // Sets the Mvc resolver DependencyResolver.SetResolver(new AutofacDependencyResolver(container)); // Sets Mvc Owin resolver as well app.UseAutofacMiddleware(container); app.UseAutofacMvc(); // Starts Mass Transit Service bus, and registers stopping of bus on app dispose var bus = container.Resolve <IBusControl>(); var busHandle = TaskUtil.Await(() => bus.StartAsync()); if (app.Properties.ContainsKey("host.OnAppDisposing")) { var context = new OwinContext(app.Properties); var token = context.Get <CancellationToken>("host.OnAppDisposing"); if (token != CancellationToken.None) { token.Register(() => busHandle.Stop(TimeSpan.FromSeconds(30))); } } }
public void Configuration(IAppBuilder app) { // Loads the config from our App.config XmlConfigurator.Configure(); // MassTransit to use Log4Net Log4NetLogger.Use(); var container = IocConfig.RegisterDependencies(); // Get your HubConfiguration. In OWIN, we create one rather than using GlobalHost var hubConfig = new HubConfiguration(); // Sets the dependency resolver to be autofac. hubConfig.Resolver = new AutofacSignalR.AutofacDependencyResolver(container); // Sets the Mvc resolver DependencyResolver.SetResolver(new AutofacMvc.AutofacDependencyResolver(container)); // Sets SignalR and Mvc Owin resolver as well app.UseAutofacMiddleware(container); app.MapSignalR("/signalr", hubConfig); app.UseAutofacMvc(); // There's not a lot of documentation or discussion for owin getting the hubcontext // Got this from here: https://stackoverflow.com/questions/29783898/owin-signalr-autofac var builder = new ContainerBuilder(); var connManager = hubConfig.Resolver.Resolve <IConnectionManager>(); builder.RegisterInstance(connManager) .As <IConnectionManager>() .SingleInstance(); builder.Update(container); // Starts Mass Transit Service bus, and registers stopping of bus on app dispose var bus = container.Resolve <IBusControl>(); var busHandle = bus.Start(); if (app.Properties.ContainsKey("host.OnAppDisposing")) { var context = new OwinContext(app.Properties); var token = context.Get <CancellationToken>("host.OnAppDisposing"); if (token != CancellationToken.None) { token.Register(() => busHandle.Stop(TimeSpan.FromSeconds(30))); } } }