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

已注册服务仍提示“不存在该类型的已注册服务”错误

解决Blazor WebAssembly依赖注入“未注册服务”错误

错误根源

你把服务注册的代码放在了构建并运行WebAssembly主机之后,这时候DI容器已经初始化完成,后续添加的服务根本不会被加载,页面注入自然找不到对应服务。

看你代码的顺序问题:

await builder.Build().RunAsync(); // 先启动了主机
ConfigureServices(builder.Services); // 后注册服务,这一步完全无效

修正代码

调整执行顺序,先注册所有服务,再构建启动主机:

修正后的程序文件代码:

using Microsoft.AspNetCore.Components.Web;
using Microsoft.AspNetCore.Components.WebAssembly.Hosting;
using blazorTestApp.Client;

var builder = WebAssemblyHostBuilder.CreateDefault(args);
builder.RootComponents.Add<App>("#app");
builder.RootComponents.Add<HeadOutlet>("head::after");

builder.Services.AddScoped(sp => new HttpClient { BaseAddress = new Uri(builder.HostEnvironment.BaseAddress) });

// 先完成所有服务注册
ConfigureServices(builder.Services);

// 再构建并运行主机
await builder.Build().RunAsync();

static void ConfigureServices(IServiceCollection serviceAdder)
{
    serviceAdder.AddSingleton<SingletonService>();
    serviceAdder.AddTransient<TransientService>();
}

额外注意

  • 要确保SingletonService和TransientService是公共类(带public修饰符),否则DI系统无法实例化它们。
  • Blazor WebAssembly的服务注册必须在builder.Build()之前完成,因为Build()会根据当前服务集合生成最终的DI容器,之后的修改不会生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 13:31:02