예제 #1
0
        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);
        }
예제 #2
0
        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);
        }