예제 #1
0
        public void ConfigureServices(IServiceCollection services)
        {
            // DbContext & related services
            var appTempDir = PathEx.GetApplicationTempDirectory("", true);
            var dbPath     = appTempDir & "Chat.db";

            services
            .AddDbContextPool <ChatDbContext>(builder => {
                builder.UseSqlite($"Data Source={dbPath}", sqlite => { });
            });

            // Fusion services
            services.AddSingleton(new Publisher.Options()
            {
                Id = Settings.PublisherId
            });
            services.AddFusionWebSocketServer();
            // Helpers used by ChatService
            services.AddTransient(c => new HttpClient());
            services.AddRestEaseCore();
            // This method registers services marked with any of ServiceAttributeBase descendants, including:
            // [Service], [ComputeService], [RestEaseReplicaService], [LiveStateUpdater]
            services.AddServices(Assembly.GetExecutingAssembly());
            // Registering shared services from the client
            Client.Program.ConfigureSharedServices(services);

            // Web
            services.AddRouting();
            services.AddMvc()
            .AddNewtonsoftJson(options => MemberwiseCopier
                               .New(JsonNetSerializer.DefaultSettings)
                               .Apply(options.SerializerSettings))
            .AddApplicationPart(Assembly.GetExecutingAssembly());
            services.AddServerSideBlazor();

            // Swagger & debug tools
            services.AddSwaggerGen(c => {
                c.SwaggerDoc("v1", new OpenApiInfo {
                    Title = "Stl.Sample.Blazor.Server API", Version = "v1"
                });
            });
        }