如何访问 IHostingStartup 实现中的配置?

Mr.*_*aus 5 configuration asp.net-core

不支持尝试IConfiguration从实现和构造函数注入中进行访问。IHostingStartup

正常的Startup.cs实现允许IConfiguration注入,从而可以轻松地从内部ConfigureService()和Configure()方法中进行访问。

访问配置的最佳实践方法是什么?

Mr.*_*aus 2

某些构建器方法存在重载(即ConfigureLogging() ConfigureAppConfiguration() ConfigureServices()允许将 WebHostBuilderContext 传递到操作中)。

WebHostBuilderContext提供对 HostingEnvironment 和配置的访问

    public class HostingStartupConfiguration : IHostingStartup
    {
        public void Configure(IWebHostBuilder builder)
        {
            builder
                .ConfigureLogging((context, builder) =>
                {
                    // clear providers set from host application
                    if (context.HostingEnvironment.IsDevelopment())
                    {
                        ...
                    }
                })
                .ConfigureAppConfiguration((context, builder) =>
                {
                    if (context.HostingEnvironment.IsDevelopment())
                        Console.WriteLine("we are in dev mode");

                    ...
                })
                .ConfigureServices((context, services) =>
                {
                    ...

                    // get assemblies based on configuration to load as Application Parts
                    var assemblies = GetControllerAssemblies(context.Configuration);

                    // register controllers application parts from external assemblies
                    foreach (var assembly in assemblies)
                    {
                        builder.AddApplicationPart(assembly);
                    }

                    ...
                });
        }
Run Code Online (Sandbox Code Playgroud)

  • `using Microsoft.Extensions.Hosting;` 是必需的。 (2认同)