生成的.NET Core 2.2 exe在其他端口上启动

时间:2019-11-20 14:15:53

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

我想为我的.NET Core 2.2应用程序生成一个.exe,并在某个端口上启动它(假设5432)。我在我的.csproj中添加了<RuntimeIdentifier>win-x64</RuntimeIdentifier>以生成该exe,并在我的applicationUrl中添加了自定义launchSettings.json

{
    ...
    "profiles": {
        "IIS Express": { ... },
        "MyApp": {
            ...
            "applicationUrl": "https://localhost:5432"
        }
    }
}

当我运行dotnet run时,应用程序将按预期的方式在端口5432上启动,但是当我在VS 2017中构建解决方案并运行exe时,它始终在5000和5001上启动。我知道我可以添加{{1 }},但我想知道是否有办法从我的--urls=""取走港口。

我正在从PowerShell运行.exe,我仅使用Visual Studio来重建解决方案。

3 个答案:

答案 0 :(得分:1)

文件launchSettings.json仅应由Visual Studio使用,仅用于开发目的,在暂存/生产/非开发人员计算机中运行时,您不应依赖它。 换句话说,当您从VS外部启动应用程序时,它并非设计为使用此文件中的端口。

答案 1 :(得分:0)

Kestrel是ASP.NET Core的跨平台Web服务器。 Kestrel是ASP.NET Core项目模板中默认包含的Web服务器。当您执行dotnet run时,它正确引用了MyApp

中的launchconfig.json设置

我认为当您使用Visual Studio时,它默认为IIS Express设置。如果将默认设置更改为不使用IIS Express,则可以。

enter image description here

答案 2 :(得分:-1)

Program.cs的{​​{1}}方法中,您可以使用

CreateWebHostBuilder()

此端口将同时用于调试和发布配置。