首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在Blazer组件中注册http客户端服务

如何在Blazer组件中注册http客户端服务
EN

Stack Overflow用户
提问于 2020-09-11 18:22:14
回答 1查看 669关注 0票数 0

当我试图访问blazor组件中的db值时,我得到了以下错误,

错误:

未处理异常呈现组件:无法为'BlazorApp.Client.Pages.EmpData.EmployeeList'.类型上的属性'EmployeService‘提供值--没有'BlazorApp.Client.Services.IEmployeeService'.类型的注册服务

以下是组件的代码:“接口:

代码语言:javascript
复制
  public interface IEmployeeService
{
    Task<IEnumerable<Employee>> GetEmployee();

}

使用接口:

代码语言:javascript
复制
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组件代码:

代码语言:javascript
复制
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注册,但是即使在使用了下面的代码之后,问题仍然存在:

代码语言:javascript
复制
builder.Services.AddScoped<IEmployeeService, EmployeeService>();
builder.Services.AddTransient<IEmployeeService, EmployeeService>();

请让我知道如何注册此http服务的blazor组件。

EN

回答 1

Stack Overflow用户

发布于 2020-09-14 06:45:21

请让我知道如何注册这个http服务与blazor组件。

只需通过以下代码注入HttpClient (正在用startup.cs中的ConfigureServices编写):

代码语言:javascript
复制
   using System.Net.Http;

    services.AddHttpClient();    
    services.AddScoped<HttpClient>();

如果要插入program.cs,可以使用以下写作方式:

代码语言:javascript
复制
      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>();
                        });
                    });
        }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63852371

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档