以下链接表示端口可以被命令行参数dotnet run --urls "http://*:8080"
覆盖。
以下是我的Asp.Net核心应用程序的Program
类。但是,它仍然显示它正在聆听http://localhost:5000?
public class Program
{
public static void Main(string[] args)
{
BuildWebHost(args).Run();
}
public static IWebHost BuildWebHost(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseContentRoot(Directory.GetCurrentDirectory())
.ConfigureAppConfiguration((hostingContext, config) =>
{
var env = hostingContext.HostingEnvironment;
config.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
.AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true, reloadOnChange: true);
config.AddEnvironmentVariables();
config.AddCommandLine(args);
})
.ConfigureLogging((hostingContext, logging) =>
{
logging.AddConfiguration(hostingContext.Configuration.GetSection("Logging"));
logging.AddConsole();
logging.AddDebug();
})
.UseStartup<Startup>()
.Build();
}
答案 0 :(得分:1)
为了影响WebHost
设置,您需要使用UseConfiguration
的实施方式调用IConfiguration
。在您的示例中,您仅使用ConfigureAppConfiguration
,这不适用于WebHost
。
以下是一个例子:
var webHostConfiguration = new ConfigurationBuilder()
.AddEnvironmentVariables()
.AddCommandLine(args)
.Build();
return WebHost.CreateDefaultuBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.UseConfiguration(webHostConfiguration)
.ConfigureAppConfiguration(...) // No changes.
.Build();
答案 1 :(得分:1)
使用WebHost.CreateDefaultBuilder(args)
只适用于 urls ,只能使用ASP.NET Core 2.1版本。
关于此问题/MetaPackages/issues/221,fix主要将以下逻辑添加到CreateDefaultBuilder
方法
if (args != null)
{
builder.UseConfiguration(new ConfigurationBuilder().AddCommandLine(args).Build());
}
所以现在你需要直接添加这段代码:
WebHost.CreateDefaultBuilder(args)
.UseContentRoot(Directory.GetCurrentDirectory())
.UseConfiguration(new ConfigurationBuilder().AddCommandLine(args).Build())
...
如果您感兴趣,为什么以下内容不会进行修复
.ConfigureAppConfiguration((hostingContext, config) =>
{
...
config.AddCommandLine(args);
})
检查此SO post