我已将我的应用程序从 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 应用程序似乎会引发相同的问题,但我不确定,因为在几乎空的应用程序中编译页面非常快。