首页 > 解决方案 > 如何在.net core 中获取当前进程监听端口?

问题描述

创建一个cmd进程,调用netstat可能会得到监听端口,但是它很复杂,创建可能很慢,任何内置方法都可以做到吗?

我找到了IPGlobalProperties.GetIPGlobalProperties().GetActiveTcpListeners(),但这将返回所有 tcp 侦听器并且没有进程信息。

标签: .net-corenetstat

解决方案


在启动项目时,有一种方法可以获取 current Address:Port,我发现了这一点。

关键是不知何故来自you must define at least once 'ASPNETCORE_URLS'外包。如果您不执行直接doesn't set DefaultEnpoints导致无法访问的 .net 核心address:port

启动.cs

    public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
    {
        String ServerAddress = app.ServerFeatures.Get<IServerAddressesFeature>().Addresses.FirstOrDefault();
        Console.WriteLine($"ServerInfo: {ServerAddress}");
        ...
    }

CMD (Windows)

set ASPNETCORE_URLS = http://localhost:2020 && dotnet MyProject.dll

码头工人

docker run --rm -it -p 2020:80 -e ASPNETCORE_URLS="http://localhost:2020" MyProjectImage

笔记:

如果尝试不使用环境变量(ASPNETCORE_URLS),您将看到空的地址集合


推荐阅读