当我试图访问blazor组件中的db值时,我得到了以下错误,
错误:
未处理异常呈现组件:无法为'BlazorApp.Client.Pages.EmpData.EmployeeList'.类型上的属性'EmployeService‘提供值--没有'BlazorApp.Client.Services.IEmployeeService'.类型的注册服务
以下是组件的代码:“接口:
public interface IEmployeeService
{
Task<IEnumerable<Employee>> GetEmployee();
}
使用接口:
public class EmployeeService : IEmployeeService
{
private readonly HttpClient httpClient;
public EmployeeService(HttpClient httpClient)
{
this.httpClient = httpClient;
}
public async Task<IEnumerable<Employee>> GetEmployee()
{
return await httpClient.GetJsonAsync<Employee[]>("api/Employees");
}
}
以及我的Blazer组件代码:
public class EmployeeListBase:ComponentBase
{
[Inject]
public IEmployeeService EmployeService { get; set;}
public IEnumerable<Employee> Employees { get; set; }
protected override async Task OnInitializedAsync()
{
Employees = (await EmployeService.GetEmployee()).ToList();
}
}甚至我也尝试在blazor组件中注册服务,因为没有startup.cs存在,所以我使用了program.cs注册,但是即使在使用了下面的代码之后,问题仍然存在:
builder.Services.AddScoped<IEmployeeService, EmployeeService>();
builder.Services.AddTransient<IEmployeeService, EmployeeService>();请让我知道如何注册此http服务的blazor组件。
发布于 2020-09-14 06:45:21
请让我知道如何注册这个http服务与blazor组件。
只需通过以下代码注入HttpClient (正在用startup.cs中的ConfigureServices编写):
using System.Net.Http;
services.AddHttpClient();
services.AddScoped<HttpClient>();如果要插入program.cs,可以使用以下写作方式:
using System.Net.Http;
public class Program
{
public static void Main(string[] args)
{
CreateHostBuilder(args).Build().Run();
}
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
webBuilder.ConfigureServices(services =>
{
services.AddHttpClient();
services.AddScoped<HttpClient>();
services.AddScoped<IEmployeeService, EmployeeService>();
});
});
}https://stackoverflow.com/questions/63852371
复制相似问题