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

Blazor Server应用中无法路由到API的问题求助

解决Blazor Server中API控制器404问题

你遇到的"页面未找到"问题,核心原因是Blazor Server项目默认不会自动启用API控制器的路由映射,需要手动补充两项关键配置:

1. 注册API控制器服务

在Program.cs的服务注册段,添加AddControllers()方法,让框架识别API控制器:

var builder = WebApplication.CreateBuilder(args);

// Add services to the container.
builder.Services.AddRazorPages();
builder.Services.AddServerSideBlazor();
builder.Services.AddSingleton<WeatherForecastService>();
// 新增:注册API控制器服务
builder.Services.AddControllers();

var app = builder.Build();

2. 映射API控制器路由

在请求管道配置中,添加MapControllers(),确保放在UseRouting()之后,让框架处理API路由请求:

app.UseRouting();

// 新增:映射API控制器路由
app.MapControllers();

app.MapBlazorHub();
app.MapFallbackToPage("/_Host");

路由配置优化(可选)

你的控制器路由[Route("api/UsersAdmin/[action]")]已经能正确匹配调用URLhttps://localhost:7168/api/usersadmin/GetAppNames,不过可以简化方法上的路由配置——因为[action]会自动映射方法名,所以可以移除方法上的[Route("GetAppNames")]:

[Route("api/UsersAdmin/[action]")]
[ApiController]
public class ApiController : ControllerBase
{    
    [HttpGet]
    // 移除多余的路由特性
    public List<string> GetAppNames()
    {
        // 原有业务代码...
    }
}

完成以上修改后重启项目,Postman就能正常调用API接口了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 02:20:15