First of all, my main goal is to configure the IP and port for my application dynamically.
I am using IConfiguration
to enter the json configuration file, as mentioned in some tutorials.
However, I cannot get the configuration in Program.cs because my WebHostBuilder
will use StartUp and Url at the same time.
So, during the assembly of the node, there is nothing in my configuration.
WebProtocolSettings settings_Web = new WebProtocolSettings(); var host = new WebHostBuilder() .UseIISIntegration() .UseKestrel() .UseContentRoot(Directory.GetCurrentDirectory()) .UseStartup<Startup>() .UseUrls(settings_Web.Url + ":" + settings_Web.Port) .Build();
In Startup.cs
public Startup(IHostingEnvironment env) { // Set up configuration sources. var builder = new ConfigurationBuilder() .SetBasePath(env.ContentRootPath) .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true); Configuration = builder.Build(); } public IConfigurationRoot Configuration { get; set; } public void ConfigureServices(IServiceCollection services) { // Adds services required for using options. services.AddOptions(); var _WebProtocolSettings = Configuration.GetSection("WebProtocolSettings"); // Register the IConfiguration instance services.Configure<WebProtocolSettings>(_WebProtocolSettings); }
My appsettings.json:
{ "WebProtocolSettings": { "Url": "127.0.0.1", "Port": 5050 } }
My WebProtocolSettings.cs:
public class WebProtocolSettings { public string Url { get; set; } public int Port { get; set; } }
source share