如何向VS2019默认生成的ASP.NET Blazor Server解决方案中添加Web API
关于你当前方案的兼容性
你现在打算用的options.EnableEndpointRouting = false + app.UseMvcWithDefaultRoute()方案不属于官方推荐、未来兼容的方案。这是.NET Core 2.x时代的MVC旧式路由配置,微软从.NET 5开始就已经标记为不推荐使用,后续.NET 8及更高版本会逐步移除相关废弃API,后续升级项目时会遇到兼容问题。
官方推荐的Blazor Server集成Web API最佳方案
该方案适用于.NET Core 3.1到最新.NET 8的所有版本,完全受官方支持,未来版本也会保持兼容:
- 步骤1:在Blazor Server项目根目录创建
Controllers文件夹(命名无强制要求,叫API也可) - 步骤2:右键文件夹添加新项,选择「Web API控制器」,正常编写数据接口即可,控制器保留默认的
[ApiController]、[Route("api/[controller]")]特性标注即可 - 步骤3:修改服务配置:
如果你用的是VS2019默认生成的.NET Core 3.x版本Startup.cs,在ConfigureServices方法中添加即可:
不需要修改EnableEndpointRouting配置,也不需要额外设置兼容版本。services.AddControllers(); - 步骤4:修改中间件配置,在
Configure方法的UseEndpoints回调中添加控制器路由映射:
完全不需要加app.UseEndpoints(endpoints => { endpoints.MapControllers(); // 仅需添加这一行 endpoints.MapBlazorHub(); endpoints.MapFallbackToPage("/_Host"); });app.UseMvcWithDefaultRoute()配置。
如果后续你升级到.NET 6+版本,配置逻辑也完全一致,仅需在Program.cs对应位置添加服务注册和路由映射即可,不需要修改接口代码。针对你用SyncFusion DataGrid绑定数据的场景,该方案返回的接口格式和你原本打算用的旧MVC路由方案完全一致,不需要调整前端绑定逻辑即可直接使用。
内容的提问来源于stack exchange,提问作者OpTech Marketing
相关产品推荐
相关产品推荐

