.NET 8 Blazor Server项目中Web API无法访问问题排查
解决方案
1. 配置Server项目的API服务与路由
Blazor Server默认未启用API控制器的路由支持,需在Program.cs中添加以下配置:
- 在服务注册阶段添加控制器服务:
builder.Services.AddControllers();
- 在中间件管道中添加控制器路由映射(注意顺序,需放在
UseRouting()之后,MapBlazorHub()之前):
app.UseRouting(); // 新增控制器路由映射 app.MapControllers(); app.MapBlazorHub(); app.MapFallbackToPage("/_Host");
2. 检查API控制器的属性配置
确保你的控制器类满足以下要求:
- 继承
ControllerBase基类 - 标记
[ApiController]属性以启用API控制器特性(如自动模型验证) - 配置正确的路由属性,示例代码:
[ApiController] [Route("api/[controller]")] // 此路由会生成`api/testdata`(对应控制器类名TestDataController) public class TestDataController : ControllerBase { [HttpGet] public IActionResult GetTestData() { return Ok(new { Data = "示例数据" }); } }
3. 优化客户端调用路径
Blazor Server项目中客户端与API同域,建议使用相对路径调用,避免硬编码端口号导致的错误,Razor组件示例:
@inject HttpClient Http <button @onclick="FetchData">获取数据</button> @code { private async Task FetchData() { var data = await Http.GetFromJsonAsync<object>("/api/testdata"); // 处理返回数据 } }
完成以上配置后,重新启动项目即可正常调用API接口。
内容的提问来源于stack exchange,提问作者tvbRPTI2754
相关产品推荐
相关产品推荐

