将服务注入启动构造函数时出错

Error when inject service into startup constructor

我是 C# 新手。我正在尝试将项目从 ASP.NET Core 2.2 迁移到 3.1。我有以下异常:

System.InvalidOperationException: 'Unable to resolve service for type 'Dionis._1.TracingOptions' while attempting to activate 'Dionis._1.Startup'.'

在 program.cs 中的这一行 CreateHostBuilder(args).Build().Run();

启动:

public Startup(IConfiguration configuration, TracingOptions tracingOptions)
        {
            Configuration = configuration;
            _tracingOptions = tracingOptions;
        }

它在 ASP.NET Core 2.2 中工作。怎么了?我需要得到 TracingOptions 因为我在 ConfigureServices 方法

中将它用于 services.AddTracing(_tracingOptions);

你用过migration guide吗?

It says:

The most significant change from WebHostBuilder to HostBuilder is in dependency injection (DI). When using HostBuilder, you can only inject the following into Startup's constructor:

  • IConfiguration
  • IHostEnvironment
  • IWebHostEnvironment

你不能再这样了。相反,在 Startup.cs 中尝试类似的东西:

public void ConfigureServices(IServiceCollection services)
{
    // other services

    TracingOptions tracingOptions = Configuration.GetSection("YOUR_SECTION_NAME").Get<TracingOptions>());
    services.AddTracing(tracingOptions);
}