如何从program.cs中的appsettings读取UrlPrefixes - asp.net core 3.1

use*_*018 2 c# asp.net-core httpsys

public static IHostBuilder CreateHostBuilder(string[] args) =>
    Host.CreateDefaultBuilder(args)
        .ConfigureWebHostDefaults(webBuilder =>
        {
            webBuilder.UseHttpSys(options =>
            {
                options.UrlPrefixes.Add("how to get url from appsettings");
            });
            webBuilder.UseStartup<Startup>();
        })
        //host as window service
        .UseWindowsService();
    }
Run Code Online (Sandbox Code Playgroud)

应用程序设置配置,

"HttpSysOptions": {
    "UrlPrefix": "http://localhost:8099/"
}
Run Code Online (Sandbox Code Playgroud)

看起来可以使用hostingContext.Configuration,但在 内无法使用UseHttpSys,该怎么办?谢谢!

pok*_*oke 5

IWebHostBuilder.UseHttpSys(Action)由两部分组成:注册所需的服务和配置HttpSysOptions. 您可以通过仅注册所需的服务并自行配置选项来将其拆分。当您这样做时,您可以访问托管上下文:

Host.CreateDefaultBuilder(args)
    .ConfigureWebHostDefaults(webBuilder =>
    {
        webBuilder.UseHttpSys();
        webBuilder.ConfigureServices((context, services) =>
        {
            services.Configure<HttpSysOptions>(options =>
            {
                options.UrlPrefixes.Add(context.Configuration["HttpSysOptions:UrlPrefix"]);
            });
        });

        webBuilder.UseStartup<Startup>();
    })
    .UseWindowsService();
Run Code Online (Sandbox Code Playgroud)