2

我已将我的应用程序从 asp.net core 5.0 移植到 asp.net core 6.0(遵循推荐的步骤,但保持 .net core 5 托管模型),我在开发中遇到了问题:页面的初始加载时间新版本很慢。

我或多或少地指出了使用 Razor 运行时编译的问题:

        IMvcBuilder mvcBuilder = services
            .AddControllersWithViews(
                configure =>
                {
                    configure.InputFormatters.Insert(0, new RawJsonBodyInputFormatter()); // this allow receiving a JSON object as a string
                    configure.Filters.Add<PeppermintExceptionsFilter>();    //new UnauthorizedExceptionFilter());
                })
            .AddViewLocalization(Microsoft.AspNetCore.Mvc.Razor.LanguageViewLocationExpanderFormat.Suffix)
            .AddDataAnnotationsLocalization(option =>
            {
                option.DataAnnotationLocalizerProvider = (type, factory) => factory.Create(typeof(SharedResource));
            })
            .AddJsonOptions(options =>
            {
                options.JsonSerializerOptions.PropertyNamingPolicy = null;
            })
            .AddFluentValidation();

        if (environment.IsDevelopment())
        {
            mvcBuilder.AddRazorRuntimeCompilation(); // commenting out this line resolves the issue
        }

当该行存在时,所有页面的初始加载最多需要 30 秒(通常,第一页需要 30 秒,其他页面通常更快)。

如果我注释掉该选项,那么一切都会再次正常运行。这显然不是生产中的问题,但对于开发来说确实有问题(并且令人沮丧)。

该问题在 asp.net core 5.0 中不存在

AddRazorRuntimeCompilation使用新的托管模型将选项添加到新的 .net 6.0 应用程序似乎会引发相同的问题,但我不确定,因为在几乎空的应用程序中编译页面非常快。

4

0 回答 0