36 var builder = Host.CreateApplicationBuilder();
37 builder.Configuration.AddUserSecrets(
"codemaru-oauth-2ba4e1b2");
39 int serverPort =
GetInt(builder.Configuration,
"PortfolioServer:Port", 7080);
40 bool listenAnyIp =
GetBool(builder.Configuration,
"PortfolioServer:ListenAnyIp",
true);
41 AuthOptions authOptions =
42 builder.Configuration.GetSection(AuthOptions.SectionName).Get<AuthOptions>() ??
new AuthOptions();
44 builder.Configuration[$
"{AuthOptions.SectionName}:UsersDbPath"],
45 Path.Combine(AppContext.BaseDirectory,
"App_Data",
"codemaru.db"));
47 builder.Services.AddDreamineHybridWpf();
48 builder.Services.AddDreamineIdentityWpfHost();
51 builder.Services.AddSingleton(opts);
61 builder.Services.AddDreamineBlazorServer<AppShell>(options =>
63 options.Port = serverPort;
64 options.ListenAnyIp = listenAnyIp;
71 options.AddPhysicalStaticFiles(opts.ResolvedDataPath,
"/portfolio-data");
73 options.ConfigureServices = services =>
75 services.AddServerSideBlazor().AddHubOptions(o =>
77 o.MaximumReceiveMessageSize =
null;
78 o.ClientTimeoutInterval = TimeSpan.FromMinutes(10);
79 o.HandshakeTimeout = TimeSpan.FromMinutes(2);
80 o.KeepAliveInterval = TimeSpan.FromSeconds(10);
83 services.AddAntiforgery(o =>
85 o.Cookie.SameSite = Microsoft.AspNetCore.Http.SameSiteMode.Lax;
86 o.Cookie.SecurePolicy = Microsoft.AspNetCore.Http.CookieSecurePolicy.SameAsRequest;
89 services.Configure<CircuitOptions>(o =>
91 o.DisconnectedCircuitMaxRetained = 100;
92 o.DisconnectedCircuitRetentionPeriod = TimeSpan.FromMinutes(3);
93 o.JSInteropDefaultCallTimeout = TimeSpan.FromMinutes(1);
94 o.MaxBufferedUnacknowledgedRenderBatches = 10;
100 options.AddDreamineIdentity(authOptions, usersDbPath);
103 builder.Build().RunDreamineWpfApp<
App>();