【发布时间】:2017-06-03 23:15:37
【问题描述】:
首先,我的主要目的是为我的应用程序动态设置 IP 和端口。
我正在使用IConfiguration 注入一个 json 配置文件,就像提到的一些教程一样。
但是,我无法检索 Program.cs 中的配置,因为我的 WebHostBuilder 将同时使用 StartUp 和 Url。
所以在主机建立时,我的配置中没有任何内容。
WebProtocolSettings settings_Web = new WebProtocolSettings();
var host = new WebHostBuilder()
.UseIISIntegration()
.UseKestrel()
.UseContentRoot(Directory.GetCurrentDirectory())
.UseStartup<Startup>()
.UseUrls(settings_Web.Url + ":" + settings_Web.Port)
.Build();
在 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);
}
我的 appsettings.json:
{
"WebProtocolSettings": {
"Url": "127.0.0.1",
"Port": 5050
}
}
我的 WebProtocolSettings.cs:
public class WebProtocolSettings
{
public string Url { get; set; }
public int Port { get; set; }
}
【问题讨论】:
标签: c# asp.net-core asp.net-core-1.0