Visual Studio覆盖在appsettings.json中设置的URL

时间:2018-04-23 14:18:49

标签: .net-core asp.net-core-webapi appsettings

我目前正在开发一个.Net Core WebAPI项目(netcore 2.0),我想在我的appsettings.json文件中定义我的应用程序运行的URL。然后我在Program.cs文件中使用以下代码:

var config = new ConfigurationBuilder()
    .SetBasePath(Directory.GetCurrentDirectory())
    .AddJsonFile("appsettings.json").Build();
var url = config.GetSection("WebAppSettings").GetValue<string>("Url");

var host = new WebHostBuilder()
.UseUrls(url)
.UseIISIntegration()
.UseKestrel()
.UseContentRoot(Directory.GetCurrentDirectory())
.ConfigureAppConfiguration((context, configBuilder) =>
{
    configBuilder
        .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
        .AddEnvironmentVariables();
})
.ConfigureLogging(logging =>
{
    logging.ClearProviders();
    logging.SetMinimumLevel(LogLevel.Trace);
})
.UseStartup<Startup>()
.UseNLog()
.Build();

host.Run();

我的appsettings.json文件:

{
  "WebAppSettings": {
    "Url": "http://localhost:5023"
  }
}

然而,当我运行我的应用程序时,它只能在端口5022上访问(我之前将其设置为此,但之后将其更改为5023)。当我查看我的项目属性并转到&#34; Debug&#34;子菜单,它表示5022为港口。我尝试删除此属性,但它是必填字段。

那么如何强制Visual Studio使用我在appsettings.json文件中设置的端口而不会搞砸我的设置呢?

1 个答案:

答案 0 :(得分:1)

IIS Express使用launchSettings.json,它本身是通过您提到的项目属性设置设置的。 UseUrls仅适用于Visual Studio / IIS Express之外。