public void ConfigureServices(IServiceCollection services) { var serilogSettings = Configuration.GetSection("SerilogSettings").Get <SerilogSettings>(); SerilogConfiguration.Configure(serilogSettings); var ravenConfig = Configuration.GetSection("RavenDbSettings").Get <RavenDbSettings>(); services.AddSingleton(RavenDbConfiguration.Configure(ravenConfig)); var filesConfig = Configuration.GetSection("FileSettings").Get <FilesSettings>(); services.AddSingleton(filesConfig); services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme) .AddCookie(options => { options.Events.OnRedirectToLogin = (context) => { context.Response.StatusCode = 401; return(Task.CompletedTask); }; }); services.AddMvc(); }
protected override void ConfigureRequestContainer(IKernel container, NancyContext context) { base.ConfigureRequestContainer(container, context); RavenDbConfiguration.ConfigureSession(container); AuthConfiguration.ConfigureRequest(container); ServiceConfiguration.ConfigureRequestServices(container); }
private async Task BuildEventStore(IServiceCollection services) { //Create EventStore Connection var eventStoreConnection = EventStoreConnection.Create( Configuration["EventStore:ConnectionString"], ConnectionSettings.Create() .KeepReconnecting() .EnableVerboseLogging() .SetHeartbeatInterval(TimeSpan.FromMilliseconds(5 * 1000)) .UseDebugLogger(), Environment.ApplicationName ); eventStoreConnection.Connected += (sender, args) => Console.WriteLine($"Connection to {args.RemoteEndPoint} event store established."); eventStoreConnection.ErrorOccurred += (sender, args) => Console.WriteLine($"Connection error : {args.Exception}"); await eventStoreConnection.ConnectAsync(); /* * eventStore cluster connection builder * var eventStoreConnection= await EventStoreConnectionBuilder.ConfigureStore(); */ var aggregateStore = new GesAggregateStore(eventStoreConnection, null); var gesSnapshotStore = new GesSnapshotStore(eventStoreConnection, null); var repository = new Repository(aggregateStore, gesSnapshotStore); services.AddSingleton <IRepository>(repository); services.AddSingleton(new ApplicationService(repository)); var documentStore = RavenDbConfiguration.Build(Configuration["RavenDb:Url"], Configuration["RavenDb:Database"]); IDocumentSession GetSession() => documentStore.OpenSession(); await ProjectionManager.With .Connection(eventStoreConnection) .CheckpointStore(new RavenDbCheckPointStore(GetSession)) .SetProjections(new Projection[] { new ActiveReviews(GetSession), new ReviewsByOwner(GetSession), new ReviewsByProducts(GetSession), }) .StartAll(); }
public static IServiceCollection AddRavenDb(this IServiceCollection services, IConfiguration configuration, string configSectionName = DefaultConfigSectionName) { var ravenDbConfigSection = configuration.GetSection(configSectionName); var ravenDbConfig = new RavenDbConfiguration(); ravenDbConfigSection.Bind(ravenDbConfig); var documentStore = new DocumentStore { Database = ravenDbConfig.Database, Urls = ravenDbConfig.Urls }.Initialize(); return(services.AddSingleton(documentStore)); }
protected override void RequestStartup(IKernel container, IPipelines pipelines, NancyContext context) { AuthConfiguration.ConfigureFormsAuth(container, pipelines); RavenDbConfiguration.EnsureSessionPersistence(container, pipelines); }
protected override void ConfigureApplicationContainer(IKernel container) { base.ConfigureApplicationContainer(container); RavenDbConfiguration.ConfigureStore(container); ServiceConfiguration.ConfigureApplicationServices(container); }