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

Asp.net core 生成的.NET Core 2.2 exe在其他端口上启动,asp.net-core,.net-core,Asp.net Core,.net Core,我想为我的.NET Core 2.2应用程序生成一个.exe,并在某个端口上启动它(比如5432)。我将win-x64添加到my.csproj以生成exe,并在mylaunchSettings.json中添加了一个自定义applicationUrl: { ... "profiles": { "IIS Express": { ... }, "MyApp": { ... "applicationUrl":

我想为我的.NET Core 2.2应用程序生成一个.exe,并在某个端口上启动它(比如5432)。我将
win-x64
添加到my.csproj以生成exe,并在my
launchSettings.json中添加了一个自定义
applicationUrl

{
    ...
    "profiles": {
        "IIS Express": { ... },
        "MyApp": {
            ...
            "applicationUrl": "https://localhost:5432"
        }
    }
}
当我运行
dotnet run
时,应用程序会按预期在端口5432上启动,但当我在VS 2017中构建解决方案并运行exe时,它总是在5000和5001上启动。我知道我可以添加
--url=”“
,但我想知道是否有办法从我的
launchSettings.json
获取端口


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

Program.cs
中,在
CreateWebHostBuilder()
方法中,您可以使用

WebHost.CreateDefaultBuilder(args).UseUrls(“http://[IP]:[Port]”);

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

Kestrel是ASP.NET核心的跨平台web服务器。Kestrel是默认情况下包含在ASP.NET核心项目模板中的Web服务器。当您运行
dotnet时
它正确地引用
launchconfig.json中的
MyApp
设置

我认为当您使用VisualStudio时,它默认为IIS Express设置。如果您将默认设置更改为不使用IIS Express,则不会有问题


文件
启动设置。json
仅应由Visual Studio使用,它仅用于开发目的,在登台/生产/非开发人员计算机中运行时,您不应依赖它。
换句话说,当您从外部启动应用程序时,它并没有被设计为使用此文件中的端口。这并不能真正回答我的问题,因为这与
--url=”“
相同,
launchSettings.json
是一个VS-only资源。您可以轻松地使用JSON文件存储自己版本的
applicationUrl
,读取值并将其传递到
UseUrls()
。您是从cmdline还是从Visual Studio运行exe?如果是后者,VS在项目属性/调试中有一些选项可能会覆盖您的settings@ESG我正在使用Powershell运行exe,我将适当地更新问题我更新了我的问题,我正在从Powershell运行.exe,而不是从VShell运行有点困惑。web应用程序怎么可能有exe?我正在添加注释,假设您是指dll。你试过dotnetcli吗?如下所示:$dotnet build-c Release-o./app$dotnet run./app/myapp.dlli如果您专门针对Windows,则可以生成.exe
dotnet publish-c Release-r win-x64