【问题标题】:Migrate from .Net core 2.2 to .Net Core 3.0从 .Net Core 2.2 迁移到 .Net Core 3.0
【发布时间】:2019-11-08 05:01:03
【问题描述】:

您好,我正在尝试将 Web API 从 .Net core 2.2 迁移到 .net core 3.0 我收到以下行代码的警告。请告诉我如何解决这个问题。

 public void ConfigureServices(IServiceCollection services)

  {  
 var buildServiceProvider = services.BuildServiceProvider();
            var getService = buildServiceProvider.GetService<IOptions<ConfigurationSettings>>();
            ConfigurationSettings = getService.Value;

}

警告:从应用程序代码调用 BuildServiceProvider 会导致创建额外的单例服务副本。

谢谢

【问题讨论】:

    标签: c# asp.net-core asp.net-core-mvc asp.net-core-webapi asp.net-core-3.0


    【解决方案1】:

    这是因为您正在创建 ServiceProvider。理想情况下,您不应调用 services.BuildServiceProvider()。看起来您正在调用BuildServiceProvider,以便您可以解析IOptions&lt;ConfigurationSettings&gt;。您可以接受 IOptions&lt;ConfigurationSettings&gt; 作为服务的参数,而不是在 ConfigureServices 方法中解析,ASP.NET Core 会将其注入到您的服务中。

    
    public class MyService : IMyService
    {
        public MyService(IOtherService otherService, IOptions<ConfigurationSettings> configurationSettings)
        {
             // read config value from here.
        }
    }
    

    【讨论】:

    • Startup.cs 中包含有关调用services.Configure&lt;ConfigurationSettings&gt;() 以绑定配置映射的信息会很有用。
    猜你喜欢
    • 1970-01-01
    • 2020-01-26
    • 1970-01-01
    • 2020-03-05
    • 1970-01-01
    • 2020-02-19
    • 1970-01-01
    • 2020-08-22
    • 2021-08-31
    相关资源
    最近更新 更多