public class Program {
public static async Task Main( string[] args ) {
var builder = WebAssemblyHostBuilder.CreateDefault( args );
builder.Services.AddSingleton<ClientDataAccess>();
await builder.Build().RunAsync();
}
}
为什么此代码无法ClientDataAccess
在我的客户端 (WASM) Blazor 中添加为 DI 服务?服务是否是空类,或者我是否将其作为单例注入,都无关紧要。它只是产生这个异常:
InvalidOperationException:无法为类型“MyProgram.Client.Components.MyEditor”上的属性“Data”提供值。没有类型为“MyProgram.Client.Services.ClientDataAccess”的已注册服务。
这是针对使用客户端 (WASM) Blazor 以及服务器端托管和 REST API 的 .net 8 Blazor Web 应用程序。
发布的代码应该适用于独立的 Wasm 应用程序。
当使用“Blazor Web App”时,无论是渲染模式 WebAssembly 还是 Auto,您都必须注册该服务两次:在两个
Program.cs
文件中。您只需在客户端中实现一次。您可能必须重新考虑 Singleton ClientDataAccess 在客户端中可以做什么。请注意,您将有 2 个“每个平台单例”实例。