private async Task <SsrResult> PrerenderIfNeeded(AppDescriptor app) { if (!ssrDecider.ShouldPrerender()) { return(null); } SsrResult ssrResult = null; var ssrBundleUrl = string.Format(serverBundleUrlTemplate, app.BundlePrefix); var serverRenderingModuleFile = env.WebRootFileProvider.GetFileInfo(ssrBundleUrl); logger.LogInformation($"[SSR] Bundle URL: {ssrBundleUrl}. Resolved file path: {serverRenderingModuleFile.PhysicalPath}"); if (serverRenderingModuleFile.Exists) { var data = new SsrData { baseUrl = app.BaseUrl }; ssrResult = await SsrRenderer.RenderAsync(Request, ssrBundleUrl, app.BaseUrl, data); if (ssrResult != null) { logger.LogInformation("[SSR] Success"); } } else { logger.LogWarning("[SSR] Pre-rendering skipped because bundle file doesn't exist."); } return(ssrResult); }
private async Task <AppPageViewModel> CreateAppModel(AppDescriptor app) { var ssrResult = await PrerenderIfNeeded(app); var mainBundleUrl = string.Format(mainBundleUrlTemplate, app.BundlePrefix); var model = new AppPageViewModel(mainBundleUrl, app.BaseUrl, ssrResult); return(model); }