protected void Application_Start() { var serializer = new JsonNetSerializer(new JsonSerializerSettings() { Converters = { new StringEnumConverter() } }); GlobalHost.DependencyResolver.Register(typeof(IJsonSerializer), () => serializer); AreaRegistration.RegisterAllAreas(); WebApiConfig.Register(GlobalConfiguration.Configuration); FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters); RouteConfig.RegisterRoutes(RouteTable.Routes); BundleConfig.RegisterBundles(BundleTable.Bundles); }
public static void PreAppStart() { if (HostingEnvironment.InClientBuildManager) { // If we're in the VS app domain then do nothing return; } var kernel = new StandardKernel(); kernel.Bind<JabbrContext>() .To<JabbrContext>(); kernel.Bind<IJabbrRepository>() .To<PersistedRepository>(); kernel.Bind<IChatService>() .To<ChatService>(); kernel.Bind<Chat>() .ToMethod(context => { // We're doing this manually since we want the chat repository to be shared // between the chat service and the chat hub itself var settings = context.Kernel.Get<IApplicationSettings>(); var resourceProcessor = context.Kernel.Get<IResourceProcessor>(); var repository = context.Kernel.Get<IJabbrRepository>(); var cache = context.Kernel.Get<ICache>(); var crypto = context.Kernel.Get<ICryptoService>(); var service = new ChatService(cache, repository, crypto); return new Chat(settings, resourceProcessor, service, repository, cache); }); kernel.Bind<ICryptoService>() .To<CryptoService>() .InSingletonScope(); kernel.Bind<IResourceProcessor>() .To<ResourceProcessor>() .InSingletonScope(); kernel.Bind<IApplicationSettings>() .To<ApplicationSettings>() .InSingletonScope(); kernel.Bind<IVirtualPathUtility>() .To<VirtualPathUtilityWrapper>(); kernel.Bind<IJavaScriptMinifier>() .To<AjaxMinMinifier>() .InSingletonScope(); kernel.Bind<ICache>() .To<AspNetCache>() .InSingletonScope(); var serializer = new JsonNetSerializer(new JsonSerializerSettings { DateFormatHandling = DateFormatHandling.MicrosoftDateFormat }); kernel.Bind<IJsonSerializer>() .ToConstant(serializer); Kernel = kernel; var resolver = new NinjectDependencyResolver(kernel); var host = new Host(resolver); host.Configuration.KeepAlive = TimeSpan.FromSeconds(30); RouteTable.Routes.MapHubs(resolver); // Perform the required migrations DoMigrations(); // Start the sweeper var repositoryFactory = new Func<IJabbrRepository>(() => kernel.Get<IJabbrRepository>()); _timer = new Timer(_ => Sweep(repositoryFactory, resolver), null, _sweepInterval, _sweepInterval); SetupErrorHandling(); ClearConnectedClients(repositoryFactory()); SetupRoutes(kernel); SetupWebApi(kernel); }