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
相关产品推荐
相关产品推荐

