Web API编写完成后注册服务

未注册之前调试接口

问题是我没有注册IGlobalsystemService。

在program.cs中找到注册服务。

var builder = WebApplication.CreateBuilder(args);
...
// 配置相关
builder.Services.AddConfig();

builder的相关定义如下,其中对于这个问题我只需要关注IServiceCollection Services ,它的实例是一个IOC容器,那么我们IGlobalsystemService 这个服务依托于这个IOC容器来添加注册的。

注:IServiceCollection 的命名空间是Microsoft.Extensions.DependencyInjection;



    // 摘要:
    //    Web 应用程序和服务的构建器。
    public sealed class WebApplicationBuilder : IHostApplicationBuilder
    {
        
        // 摘要:
        // 提供有关应用程序正在运行的 Web 托管环境的信息。
        public IWebHostEnvironment Environment { get; }
        //
        // 摘要:
        //  供应用程序组成的服务集合。这对于添加用户提供的或框架提供的服务非常有用。
        public IServiceCollection Services { get; }
        //
        // 摘要:
        //  应用程序的配置提供程序集合。这对添加新的配置源和提供程序非常有用。.
        public ConfigurationManager Configuration { get; }
        //
        // 摘要:
        //  供应用程序编写日志的日志提供程序集合。这对添加新日志记录提供程序非常有用。
        public ILoggingBuilder Logging { get; }
        //
        // 摘要:
        //  Allows enabling metrics and directing their output.
        public IMetricsBuilder Metrics { get; }
        //
        // 摘要:
        //   Microsoft.AspNetCore.Hosting.IWebHostBuilder 用于配置服务器特定属性,但不进行构建。要在配置后构建,请调用 Microsoft.AspNetCore.Builder.WebApplicationBuilder.Build。
        public ConfigureWebHostBuilder WebHost { get; }

        // 摘要:
        //     用于配置主机特定属性的 Microsoft.Extensions.Hosting.IHostBuilder,
        // 但不构建。要在配置后构建,请调用 //Microsoft.AspNetCore.Builder.WebApplicationBuilder.Build。
        public ConfigureHostBuilder Host { get; }

        
        // 摘要:
        //    构建 Microsoft.AspNetCore.Builder.WebApplication
        //
        // 返回结果:
        //     A configured Microsoft.AspNetCore.Builder.WebApplication.
        public WebApplication Build();
    }

既然知道了IServiceCollection是一个容器注册器,那么现在要知道如何添加服务了。

  public static IServiceCollection AddConfig(this IServiceCollection service)
  {
      return service.AddHostedService<DbHostedService>()
          .AddScoped<IGlobalSystemService, GlobalSystemService>();
  }

和IServiceCollection同一命名空间的ServiceCollectionServiceExtensions和ServiceCollectionHostedServiceExtensions静态类都提供了相关的IServiceCollection方法,如下:

AddScoped静态方法

  • 释义添加服务——向指定的 Microsoft.Extensions.DependencyInjection.IServiceCollection 中添加服务类型为 serviceType(接口) 中指定的作用域服务(接口实现)。
  • 隶属:ServiceCollectionServiceExtensions
  • 参数1:this.当前对象,也就是说它应该被IServiceCollection类型对象调用
  • 参数2:被注册的服务类型
  • 参数3:注册的服务类型实现

AddHostedService静态方法

  • 方法定义注册——为给定类型添加Microsoft.Extensions.Hosting.IHostedService 注册。
  • 隶属:ServiceCollectionHostedServiceExtensions
  • 给定类型托管服务——要注册的 Microsoft.Extensions.Hosting.IHostedService。这里的给的类型是DbHostedService,是我们的数据库托管服务
  • 返回:原始的IServiceCollection

添加GlobalSystemService后

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值