62 private static void Run()
64 HostApplicationBuilder builder = Host.CreateApplicationBuilder();
65 builder.Configuration.AddUserSecrets(
"codemaru-oauth-2ba4e1b2");
67 int serverPort =
GetInt(builder.Configuration,
"WeddingServer:Port", 4088);
68 bool listenAnyIp =
GetBool(builder.Configuration,
"WeddingServer:ListenAnyIp",
true);
69 bool useEmbeddedWebView =
GetBool(builder.Configuration,
"WeddingShell:UseEmbeddedWebView",
true);
76 AuthOptions authOptions =
77 builder.Configuration.GetSection(AuthOptions.SectionName).Get<AuthOptions>() ??
new AuthOptions();
79 builder.Configuration[$
"{AuthOptions.SectionName}:UsersDbPath"],
80 Path.Combine(AppContext.BaseDirectory,
"App_Data",
"codemaru.db"));
82 builder.Services.AddDreamineHybridWpf();
83 builder.Services.AddDreamineIdentityWpfHost();
87 builder.Services.AddSingleton(weddingOpts);
100 builder.Services.AddDreamineBlazorServer<AppShell>(options =>
102 options.Port = serverPort;
103 options.ListenAnyIp = listenAnyIp;
104 options.UseEmbeddedWebView = useEmbeddedWebView;
117 options.AddPhysicalStaticFiles(weddingOpts.ResolvedDataPath,
"/wedding-data");
123 options.ConfigureServices = services =>
125 services.AddServerSideBlazor()
128 o.MaximumReceiveMessageSize =
null;
129 o.ClientTimeoutInterval = TimeSpan.FromMinutes(10);
130 o.HandshakeTimeout = TimeSpan.FromMinutes(2);
131 o.KeepAliveInterval = TimeSpan.FromSeconds(10);
134 services.AddAntiforgery(o =>
136 o.Cookie.SameSite = Microsoft.AspNetCore.Http.SameSiteMode.Lax;
137 o.Cookie.SecurePolicy = Microsoft.AspNetCore.Http.CookieSecurePolicy.SameAsRequest;
140 services.Configure<CircuitOptions>(o =>
142 o.DisconnectedCircuitMaxRetained = 100;
143 o.DisconnectedCircuitRetentionPeriod = TimeSpan.FromMinutes(3);
144 o.JSInteropDefaultCallTimeout = TimeSpan.FromMinutes(1);
145 o.MaxBufferedUnacknowledgedRenderBatches = 10;
151 options.AddDreamineIdentity(authOptions, usersDbPath);
154 builder.Build().RunDreamineWpfApp<
App>();