You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET 8 Preview 6中Razor Pages仅启用RuntimeCompilation才渲染的问题

问题:ASP.NET 8 Preview 6中Razor Pages未启用RuntimeCompilation时出现404错误

使用标准ASP.NET 8(或.NET 7)Web应用模板时,不启用Razor RuntimeCompilation,Razor Pages就无法渲染(路由不被识别),Chrome浏览器中显示标准404错误页面;启用AddRazorRuntimeCompilation()后功能恢复正常。中间件管道配置看似无问题,相关代码如下:

WebApplicationBuilder builder = WebApplication.CreateBuilder(args);    
// 正常工作
// -----------------------------------------------
builder.Services.AddRazorPages().AddRazorRuntimeCompilation();

// 无法工作
// -----------------------------------------------
builder.Services.AddRazorPages();

WebApplication app = builder.Build();

if (!app.Environment.IsDevelopment())
{
    app.UseExceptionHandler("/Error");
    app.UseHsts();
}

app.UseHttpsRedirection();
app.UseStaticFiles();

app.UseRouting();

app.UseAuthorization();

app.MapRazorPages();

app.Run();

当前使用.NET 8 Preview 6版本。

排查与解决建议

  • 检查项目文件(.csproj)的编译配置,确保Razor编译开关已启用。默认情况下这些配置应该存在,但预览版本可能出现异常,需确认以下节点:

    <PropertyGroup>
      <TargetFramework>net8.0</TargetFramework>
      <Nullable>enable</Nullable>
      <ImplicitUsings>enable</ImplicitUsings>
      <RazorCompileOnBuild>true</RazorCompileOnBuild>
      <RazorCompileOnPublish>true</RazorCompileOnPublish>
    </PropertyGroup>
    
  • 清理编译缓存后重新构建:手动删除项目根目录下的bin和obj文件夹,或执行命令:

    dotnet clean
    dotnet build
    
  • 确认Razor Pages文件结构与路由:确保页面文件(如Index.cshtml)放置在项目根目录的Pages文件夹下,页面的@page指令配置正确(无自定义路由需求时,仅保留@page即可)。

  • 更新.NET版本:.NET 8 Preview 6属于预览版,可能存在Razor编译相关的已知bug,建议升级到最新的.NET 8预览版或等待稳定版发布。

  • 验证中间件顺序:当前中间件顺序符合ASP.NET Core规范,但需排查是否存在自定义中间件提前拦截了路由请求,导致Razor Pages路由未被匹配。

内容的提问来源于stack exchange,提问作者Lindstrøm

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 11:55:12