static async Task Main(string[] args) { Console.Title = "Group"; var configuration = GetConfiguration(); var kernel = ConfigureKernel(configuration.GetConnectionString("DefaultConnection")); var endpointConfiguration = EndPointConfigurationFactory.Create(); endpointConfiguration.UseContainer <NinjectBuilder>(customizations => { customizations.ExistingKernel(kernel); }); var endpointInstance = await Endpoint.Start(endpointConfiguration) .ConfigureAwait(false); kernel.Bind <IMessageSession>().ToConstant(endpointInstance); Console.WriteLine("Press Enter to exit."); Console.ReadLine(); await endpointInstance.Stop() .ConfigureAwait(false); }
// This method gets called by the runtime. Use this method to add services to the container. public void ConfigureServices(IServiceCollection services) { services.Configure <CookiePolicyOptions>(options => { // This lambda determines whether user consent for non-essential cookies is needed for a given request. options.CheckConsentNeeded = context => true; options.MinimumSameSitePolicy = SameSiteMode.None; }); services.AddDbContext <ApplicationDbContext>(options => options.UseSqlServer( Configuration.GetConnectionString("DefaultConnection"))); services.AddDbContext <BizchatDbContext>(options => options.UseSqlServer( Configuration.GetConnectionString("DefaultConnection"), b => b.MigrationsAssembly("Bizchat.Web"))); services.AddDefaultIdentity <IdentityUser>(options => { options.Password.RequireDigit = false; options.Password.RequireNonAlphanumeric = false; }) .AddEntityFrameworkStores <ApplicationDbContext>(); services.AddTransient <IChatRoomsRepository, EfChatRoomsRepository>(); services.AddTransient <IChatUsersRepository, EfChatUsersRepository>(); services.AddTransient <IChatMessagesRepository, EfChatMessagesRepository>(); services.AddTransient <IChatMessageReceivedByChatRoomEventsRepository, EfChatMessageReceivedByChatRoomEventsRepository>(); services.AddTransient <IChatMessageSentEventsRepository, EfChatMessageSentEventsRepository>(); services.AddTransient <IQueueMessagesService, NServiceBusQueueMessagesService>(); services.AddTransient <SendMessageVerb>(); // SignalR simply doesn't work! services.AddSignalR(); services.AddSingleton(c => { var name = "chatMessagesHub"; var url = $"{Configuration["RootUrl"]}/{name}"; var connection = new HubConnectionBuilder() .WithUrl(url) .Build(); connection.StartAsync().Wait(); return(connection); }); // NServiceBus settings var endpointConfiguration = EndPointConfigurationFactory.Create(); endpointConfiguration.UseContainer <ServicesBuilder>(customizations => { customizations.ExistingServices(services); }); var endpoint = Endpoint.Start(endpointConfiguration).GetAwaiter().GetResult(); services.AddSingleton <IMessageSession>(endpoint); services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1); }