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

Blazor Server从Razor类库渲染页面时刷新出现空白页问题

ASP.NET Core 8.0 Blazor Razor类库页面刷新空白问题解决

问题描述

我有一个ASP.NET Core 8.0 Blazor应用,希望通过独立的Razor类库存放共享页面与组件,方便.NET Maui应用复用。已将RCL的程序集添加到路由器的AdditionalAssemblies中,从首页可以正常导航到目标页面(如Page 1),但刷新该页面时会出现空白屏,Web控制台、IDE及浏览器检查器均无报错,页面仅显示<pre>标签。若将页面移至Web项目则可正常刷新,仅使用Razor类库时出现此异常。Web项目配置如下:

// Add services to the container.
builder.Services.AddRazorComponents()
                .AddInteractiveServerComponents();

app.MapRazorComponents<App>()
   .AddInteractiveServerRenderMode();

解决方案

  • 完善RCL项目配置
    确保Razor类库的项目文件使用正确的Sdk,并配置目标框架与组件支持:

    <Project Sdk="Microsoft.NET.Sdk.Razor">
      <PropertyGroup>
        <TargetFramework>net8.0</TargetFramework>
        <AddRazorSupportForMvc>true</AddRazorSupportForMvc>
        <Nullable>enable</Nullable>
      </PropertyGroup>
    </Project>
    
  • 在Web项目中注册RCL组件程序集
    除了路由器配置,还需要在服务注册阶段将RCL的程序集添加到Razor组件服务中,同时在路由映射时指定额外程序集:

    // 引入RCL中任意页面/组件的类型来获取程序集
    using YourRCLNamespace;
    
    // Add services to the container.
    builder.Services.AddRazorComponents()
                    .AddInteractiveServerComponents()
                    // 添加RCL的程序集
                    .AddAdditionalAssemblies(typeof(Page1).Assembly);
    
    app.MapRazorComponents<App>()
       .AddInteractiveServerRenderMode()
       // 路由映射时也指定RCL程序集
       .AddAdditionalAssemblies(typeof(Page1).Assembly);
    
  • 检查页面路由与布局

    • 确认RCL中页面的@page路由规则唯一,无重复路由冲突;
    • 确保页面指定了正确的布局(如@layout MainLayout),且布局组件在Web项目或共享RCL中可被访问。
  • 验证静态资源配置
    如果RCL包含静态资源(如CSS、JS),确保Web项目启用了静态文件服务:

    app.UseStaticFiles();
    

    同时RCL的静态资源需放在wwwroot目录下,Web项目会自动引用这些资源。

内容的提问来源于stack exchange,提问作者James Ellis

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 01:08:22