.NET 5 Blazor PWA运行VehicleList页报错:无IVehicleService类型注册服务如何解决
问题根因说明
- 报错中出现的
c__DisplayClass6_0是C#编译器为闭包逻辑自动生成的内部类名称,和你当前遇到的问题完全无关,可以直接忽略。 - 核心错误原因非常明确:Blazor WASM(WebAssembly)是前后端分离的运行架构,你在服务端Startup.cs里注册的是服务端运行环境的仓储服务,而Blazor客户端页面运行在用户浏览器的独立运行时中,使用自己的依赖注入容器,你没有在客户端的服务注册逻辑中添加
IVehicleService的实现映射,所以注入失败。你之前的Customer功能能正常运行,是因为之前已经在客户端注册过对应的ICustomerService服务。
解决方案
按以下步骤操作即可修复:
- 先确认客户端项目的
MyCore5AppPWA.Client.Services命名空间下,已经完成IVehicleService实现类的开发,例如命名为VehicleService,内部逻辑是通过HttpClient调用服务端VehicleController的接口,和你之前的CustomerService实现逻辑保持一致即可。 - 找到客户端项目的服务注册入口:.NET 5版本的Blazor WASM默认在客户端项目的
Program.cs文件中配置服务,找到和你之前注册ICustomerService相同的位置,添加一行服务注册代码:
// 以下代码添加到客户端Program.cs的CreateHostBuilder逻辑中,和ICustomerService注册位置一致 builder.Services.AddScoped<IVehicleService, VehicleService>();
- 可选校验项(排查额外问题):
- 确认服务端
VehicleController的路由配置正确,可直接在浏览器访问接口地址验证返回值正常 - 确认
VehicleService的构造函数正确注入了配置好的HttpClient实例,和CustomerService的构造逻辑保持一致
内容的提问来源于stack exchange,提问作者John D
相关产品推荐
相关产品推荐

