我使用下面的代码在我的 .Net-Core 1.2 环境中添加命令行,我可以使用像dotnet run --urls "http://a.cn.com:5000" --environment "Production".
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();
}
Run Code Online (Sandbox Code Playgroud)
迁移到 .net core 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();
}
Run Code Online (Sandbox Code Playgroud)
我使用相同的命令行,它失败了。如何在 .net core 2.0 中添加命令?
供应:2017.08.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"
}
}
}
Run Code Online (Sandbox Code Playgroud)
我期望听到的是
Now listening on http://a.cn.com:5000
我得到的是:
并且我们不应该在Program.cs文件中添加任何其他代码,因为 CreateDefaultBuilder 包含 addCommandLine。有关更多详细信息,您可以查看WebHost.cs#L177
供应 2017 0817 17:44 UTC+8
[::] 是 IPv4 0.0.0.0 的 IPv6 等价物。
直接使用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();
}
Run Code Online (Sandbox Code Playgroud)
而且我们不应该在 Program.cs 文件中添加任何其他代码,因为 CreateDefaultBuilder 包含 addCommandLine。有关更多详细信息,您可以参见 WebHost.cs#L177
这并不完全正确,因为链接CreateDefaultBuilder实现使用的是ConfigureAppConfiguration方法,而不是UseConfiguration. 并且有一个区别(来自相关的Github 问题):
旨在
ConfigureAppConfiguration配置IConfiguration应用程序服务中的 ,而UseConfiguration旨在配置WebHostBuilder.WebHostBuilder由于 url 地址是唯一的设置,UseConfiguration因此此处有效。请注意,WebHostBuilder 的配置已添加到应用程序的配置中,但反之则不然;配置应用程序的配置不会影响 WebHostBuilder 的配置。
| 归档时间: |
|
| 查看次数: |
2500 次 |
| 最近记录: |