添加新服务时 blazor.net 中没有类型错误的已注册服务
There is no registered service of type error in blazor.net when adding a new service
我已经根据文档设置了示例 blazor.net application。之后我创建了一个新服务并硬编码了一些数据并尝试 运行 应用程序。
但我在控制台中收到以下错误:
There is no registered service of type <applicationName>.App.Services.<serviceName>
新的服务名称好像需要注册一些,请问如何注册新的服务?
新创建的服务名称应该在<applicationName>.App\Startup.cs
文件的ConfigureServices
方法中注册。
例如,如果新服务名称为MyNewService.cs
,则应在ConfigureServices
方法中添加如下内容。
示例代码:
public class Startup
{
public void ConfigureServices(IServiceCollection services)
{
// ... existing services
services.AddSingleton<MyNewService>();
}
...
...
值得注意的是,对于 Blazor WebAssembly,没有像 Blazor Server 中那样的 Startup class。在 Blazor WebAssembly 中,我们可以在 Program.cs 中注册服务,如下所示:
public static async Task Main(string[] args)
{
var builder = WebAssemblyHostBuilder.CreateDefault(args);
//...other services
builder.Services.AddSingleton<MyNewService>();
builder.RootComponents.Add<App>("app");
await builder.Build().RunAsync();
}
我已经根据文档设置了示例 blazor.net application。之后我创建了一个新服务并硬编码了一些数据并尝试 运行 应用程序。
但我在控制台中收到以下错误:
There is no registered service of type
<applicationName>.App.Services.<serviceName>
新的服务名称好像需要注册一些,请问如何注册新的服务?
新创建的服务名称应该在<applicationName>.App\Startup.cs
文件的ConfigureServices
方法中注册。
例如,如果新服务名称为MyNewService.cs
,则应在ConfigureServices
方法中添加如下内容。
示例代码:
public class Startup
{
public void ConfigureServices(IServiceCollection services)
{
// ... existing services
services.AddSingleton<MyNewService>();
}
...
...
值得注意的是,对于 Blazor WebAssembly,没有像 Blazor Server 中那样的 Startup class。在 Blazor WebAssembly 中,我们可以在 Program.cs 中注册服务,如下所示:
public static async Task Main(string[] args)
{
var builder = WebAssemblyHostBuilder.CreateDefault(args);
//...other services
builder.Services.AddSingleton<MyNewService>();
builder.RootComponents.Add<App>("app");
await builder.Build().RunAsync();
}