无法在launchSettings.JSON中为Net.Core应用程序设置端口

时间:2016-11-11 15:08:39

标签: json asp.net-core

我已经编辑了 launchSettings.JSON 文件并更改了端口。

"Gdb.Blopp": {
  "commandName": "Project",
  "launchBrowser": false,
  "launchUrl": "http://localhost:4000",
  "environmentVariables": {
    "ASPNETCORE_ENVIRONMENT": "Development"
  }

但它仍然从端口5000开始。这个设置是否被忽视了,还是我错过了其他什么?

2 个答案:

答案 0 :(得分:5)

当您点击F5 / Ctr + F5时,IDE(即Visual Studio)应该使用launchSettings.json,并从开始按钮旁边的下拉菜单中提供选项。

enter image description here

此外,您不应直接编辑launcherSettings.json文件,而是使用“项目属性”来更改内容。

这样做的一个原因是,如果您通过项目属性更改它,Visual Studio还将编辑IIS Express文件(位于解决方案的.vs/config/applicationhost.config文件夹中)。

如果您想更改使用的端口红隼,请在.UseUrls("http://0.0.0.0:4000")中使用appsettings.json(从hosting.jsonProgram.cs获取)。

如果你不想使用硬编码,你也可以这样做

创建hosting.json

{
  "server": "Microsoft.AspNetCore.Server.Kestrel",
  "server.urls": "http://localhost:4000"
}

Program.cs的

public class Program
{
    public static void Main(string[] args)
    {
        var config = new ConfigurationBuilder()
            .AddJsonFile("hosting.json", optional: false)
            .AddEnvironmentVariables(prefix: "ASPNETCORE_")
            .Build();

        var host = new WebHostBuilder()
            .UseConfiguration(config)
            .UseKestrel()
            .UseContentRoot(Directory.GetCurrentDirectory())
            .UseIISIntegration()
            .UseStartup<Startup>()
            .Build();

        host.Run();
    }
}

您也可以通过命令行执行此操作(AddCommandLine此处的呼叫非常重要,来自Microsoft.Extensions.Configuration.CommandLine"包)。

var config = new ConfigurationBuilder()
    .AddCommandLine(args)
    .Build();

var host = new WebHostBuilder()
    .UseConfiguration(config)
    .UseKestrel()
    .UseContentRoot(Directory.GetCurrentDirectory())
    .UseIISIntegration()
    .UseStartup<Startup>()
    .Build();

host.Run();

然后通过dotnet run server.urls=http://0.0.0.0:4000运行。

当您运行IIS / IISExpress时,茶隼端口将由UseIISIntegration()确定。

答案 1 :(得分:2)

从.NET Core 2.0开始,您不必再维护hosting.json或修改应用启动了。内置支持设置应用程序端口,在此处说明:https://stackoverflow.com/a/49000939/606007