WebHostBuilder。如何使用.NET-Core 2.0中的CommandLine设置URL地址?
我使用下面的代码在我的.Net-Core 1.2环境中添加CommandLine,我可以使用命令行如dotnet run --urls "http://a.cn.com:5000" --environment "Production"
。WebHostBuilder。如何使用.NET-Core 2.0中的CommandLine设置URL地址?
public static void Main(string[] args)
{
var config = new ConfigurationBuilder()
.AddJsonFile("hosting.json", optional: true)
.AddCommandLine(args)
.Build();
var host = new WebHostBuilder()
.UseKestrel()
.UseContentRoot(Directory.GetCurrentDirectory())
.UseIISIntegration()
.UseStartup<Startup>()
.UseConfiguration(config)
.Build();
host.Run();
}
和迁移后到.NET核心2.0变得像
public static void Main(string[] args)
{
BuildWebHost(args).Run();
}
public static IWebHost BuildWebHost(string[] args)
{
return WebHost.CreateDefaultBuilder(args)
.ConfigureLogging((context, logging) =>
{
logging.AddSerilog();
})
.UseStartup<Startup>()
.Build();
}
我使用相同的命令行,它失败。 如何在.net core 2.0中添加命令?
供应:2017年8月17日 launchsetting.json如下:
{
"iisSettings": {
"windowsAuthentication": false,
"anonymousAuthentication": true,
"iisExpress": {
"applicationUrl": "http://localhost:5005/",
"sslPort": 0
}
},
"profiles": {
"IIS Express": {
"commandName": "IISExpress",
"launchBrowser": true,
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
},
"Robert.Project.Web": {
"commandName": "Project",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
},
"applicationUrl": "http://localhost:5006"
}
}
}
我期待聆听是 Now listening on http://a.cn.com:5000
我得到的是:
我们不应该在Program.cs
文件中添加任何其他代码,因为CreateDefaultBuilder包含addCommandLine。更多的细节,你可以看到WebHost.cs#L177
供应2017年0817 17:44 UTC + 8
[:]是IPv6相当于IPv4的0.0.0.0的。
使用UseConfiguration
直接设置由ARGS填充URL地址:
public static IWebHost BuildWebHost(string[] args)
{
var config = new ConfigurationBuilder().AddCommandLine(args).Build();
return WebHost.CreateDefaultBuilder(args)
.UseConfiguration(config)
.UseStartup<Startup>()
.Build();
}
,我们不应该加入的Program.cs文件中其他任何代码,造成CreateDefaultBuilder是包含addCommandLine。更多的细节,你可以看到WebHost.cs#L177
这并不完全正确,因为链接CreateDefaultBuilder
实现使用ConfigureAppConfiguration
方法,而不是UseConfiguration
。而且是有区别的(关联Github issue):
的
ConfigureAppConfiguration
旨在配置的应用服务IConfiguration
而UseConfiguration
旨在配置WebHostBuilder
的设置。由于url地址是WebHostBuilder
上的设置,因此只有UseConfiguration
才能在此工作。请注意WebHostBuilder的配置被添加到应用程序的配置中,但反过来是不正确的;配置应用程序的配置不会影响WebHostBuilder的配置。
已经尝试过这一点,但命令行参数正在被launchsettings.json覆盖,而这些都不会发生 – daw
我使用命令'dotnet run --urls“http://a.cn.com:5000”'现在在听:'http:// localhost:5000' – doublnt
so a.cn。com在您的开发机器上还是生产服务器上的本地主机的别名?或者你认为它忽略了--urls参数并默认为localhost?它可能是第一个,因为它的端口权利... – dlatikay
a.cn.com是我的开发机器上的本地主机的别名。 – doublnt