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

Blazor页面短暂显示数据后出现“Not found”问题求助

问题分析与解决方案

你遇到的页面短暂显示数据后跳转至「Not found」的问题,核心可能是路由冲突、数据绑定依赖失效或全局中间件/错误处理配置异常,以下是针对性的排查与修复步骤:

1. 修正组件数据绑定逻辑

你的代码中QuickGrid直接绑定了_context?.Clinica(DbContext的DbSet),但DbContext会在组件销毁时被释放,后续组件重新渲染时会因DbSet失效触发异常,进而可能触发错误导航。改为使用已加载到内存的_clinicas列表:

@page "/clinicas"

@using Atena.Data
@using Atena.Models
@using Microsoft.AspNetCore.Components.QuickGrid
@using Microsoft.EntityFrameworkCore

@implements IAsyncDisposable
@inject IDbContextFactory<ApplicationDbContext> DbFactory

<PageTitle>Clínicas</PageTitle>

<h1>Clínicas</h1>

<!-- 改为绑定已加载的内存列表 -->
<QuickGrid Class="table" Items="_clinicas">
    <PropertyColumn Property="clinica => clinica.Email"/>
    <PropertyColumn Property="clinica => clinica.Fantasia"/>
    <PropertyColumn Property="clinica => clinica.Cep"/>
    <PropertyColumn Property="clinica => clinica.Endereco"/>
</QuickGrid>

@code {
private ApplicationDbContext? _context = null!;
private List<Clinica>? _clinicas;

protected override async Task OnInitializedAsync()
{
    _context = await DbFactory.CreateDbContextAsync();
    _clinicas = await _context.Clinica.ToListAsync();
}

   public async ValueTask DisposeAsync()
   {
       if (_context is not null)
       {
            await _context.DisposeAsync();
       }
   }
}

2. 排查路由配置问题

  • 检查路由冲突:搜索整个解决方案中所有@page指令,确保没有其他页面使用/clinicas路由。
  • 确认路由注册顺序:打开Program.cs,确保组件路由注册在正确位置,且无错误重定向规则:
    app.UseHttpsRedirection();
    app.UseStaticFiles();
    app.UseRouting();
    app.UseAuthorization();
    
    // 组件路由注册应在授权之后
    app.MapRazorComponents<App>()
       .AddInteractiveServerRenderMode()
       .AddInteractiveWebAssemblyRenderMode()
       .AddInteractiveAutoRenderMode();
    
    // 避免错误的全局 fallback 规则,确保仅在真正404时触发
    // 错误示例:app.MapFallbackToPage("/NotFound");
    

3. 检查网络请求与异常

  • 打开浏览器开发者工具(F12),切换到「网络」标签,刷新页面查看所有请求的状态码,确认是否有API请求或静态资源返回404,导致页面跳转。
  • 切换到「控制台」标签,查看是否有未捕获的异常,异常可能触发框架自动导航至错误页面。

4. 验证错误处理配置

如果使用了异常处理中间件,确认错误页面路由正确,不会错误跳转到NotFound:

// 确保/Error页面存在且路由配置正确
app.UseExceptionHandler("/Error");

内容的提问来源于stack exchange,提问作者Sergio Di Fiore

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 04:22:48