private async Task InvokeCore(HttpContext context) { context.Response.Headers[HeaderNames.CacheControl] = "no-cache, no-store, must-revalidate, max-age=0"; if (!await _spaProxyLaunchManager.IsSpaProxyRunning(context.RequestAborted)) { _spaProxyLaunchManager.StartInBackground(_hostLifetime.ApplicationStopping); _logger.LogInformation("SPA proxy is not ready. Returning temporary landing page."); context.Response.ContentType = "text/html"; await using var writer = new StreamWriter(context.Response.Body, Encoding.UTF8); await writer.WriteAsync(GenerateSpaLaunchPage(_options.Value)); } else { _logger.LogInformation($"SPA proxy is ready. Redirecting to {_options.Value.ServerUrl}."); context.Response.Redirect(_options.Value.ServerUrl); }
private async Task InvokeCore(HttpContext context) { context.Response.Headers[HeaderNames.CacheControl] = "no-cache, no-store, must-revalidate, max-age=0"; if (!await _spaProxyLaunchManager.IsSpaProxyRunning(context.RequestAborted)) { _spaProxyLaunchManager.StartInBackground(_hostLifetime.ApplicationStopping); _logger.LogInformation("SPA proxy is not ready. Returning temporary landing page."); context.Response.ContentType = "text/html"; await using var writer = new StreamWriter(context.Response.Body, Encoding.UTF8); await writer.WriteAsync(GenerateSpaLaunchPage(_options.Value)); } else { _logger.LogInformation($"SPA proxy is ready. Redirecting to {_options.Value.ServerUrl}."); context.Response.Redirect(_options.Value.ServerUrl); } string GenerateSpaLaunchPage(SpaDevelopmentServerOptions options) { return($@" <!DOCTYPE html> <html lang=""en""> <head> <meta charset = ""UTF-8"" > <meta http-equiv=""X-UA-Compatible"" content=""IE=edge""> <meta http-equiv=""refresh"" content=""3""> <meta name=""viewport"" content=""width=device-width, initial-scale=1.0""> <title>SPA proxy launch page</title> </head> <body> <h1>Launching the SPA proxy...</h1> <p>This page will automatically redirect to <a href=""{HtmlEncoder.Default.Encode(options.ServerUrl)}"">{HtmlEncoder.Default.Encode(options.ServerUrl)}</a> when the SPA proxy is ready.</p> </body> </html>"); } }