生成的 .NET Core 2.2 exe 在不同的端口上启动

问题描述 投票:0回答:4

我想为我的 .NET Core 2.2 应用程序生成一个 .exe 并在某个端口(假设为 5432)上启动它。我将

<RuntimeIdentifier>win-x64</RuntimeIdentifier>
添加到我的 .csproj 以生成 exe,并在我的
applicationUrl
中添加自定义
launchSettings.json

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

当我运行

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

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

asp.net-core .net-core
4个回答
1
投票

File

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


0
投票

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

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

此端口将在调试和发布配置中使用。


0
投票

Kestrel 是 ASP.NET Core 的跨平台 Web 服务器。 Kestrel 是默认包含在 ASP.NET Core 项目模板中的 Web 服务器。当您执行

dotnet run
时,它会正确引用
MyApp
 中的 
launchconfig.json

设置

我认为当您使用 Visual Studio 时,它默认为 IIS Express 设置。如果您将默认值更改为不使用 IIS Express,那就没问题了。


0
投票

Wickedlizerd 的建议对我有用,谢谢。我正在运行 .exe 文件,因此无法设置网址。所以我只需要稍微改变一下,因为我使用的是.NET 7。我使用了这个:

builder.WebHost.UseUrls(new[] { "http://domainName:5005" });
© www.soinside.com 2019 - 2024. All rights reserved.