You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AWS上Bitnami Node服务器部署Asp.Net后端端口占用问题排查

解决ASP.NET后端在Bitnami Node服务器上的端口占用问题

可能的原因及对应解决步骤

1. 端口处于TIME_WAIT状态(无进程但仍被占用)

Linux系统中,端口释放后会进入TIME_WAIT状态(默认持续约2分钟),此时端口无法被立即复用。可以通过以下方式解决:

  • 临时启用端口复用:
    sudo sysctl -w net.ipv4.tcp_tw_reuse=1
    sudo sysctl -w net.ipv4.tcp_tw_recycle=1
    
  • 永久生效:编辑/etc/sysctl.conf,添加以下两行,然后执行sudo sysctl -p:
    net.ipv4.tcp_tw_reuse=1
    net.ipv4.tcp_tw_recycle=1
    

2. 让Kestrel允许端口复用

修改你的Program.cs代码,在Kestrel端口配置中添加端口复用设置:

builder.WebHost.ConfigureKestrel(kestrel =>
{
    kestrel.ListenAnyIP(49155, portOptions =>
    {
        portOptions.UseReusePort(); // 启用端口复用
        portOptions.UseHttps(h =>
        {
            h.UseLettuceEncrypt(kestrel.ApplicationServices);
        });
    });
});

这个配置允许Kestrel复用处于TIME_WAIT状态的端口,避免重启时的绑定失败。

3. 清理残留的Dotnet进程

即使端口检查无结果,可能存在后台残留的dotnet进程占用资源:

sudo ps aux | grep dotnet
sudo pkill dotnet

执行完后再重启你的ASP.NET程序。

4. 检查Apache配置冲突

Bitnami自带的Apache可能存在未注意的端口占用或反向代理配置:

  • 查看Apache虚拟主机配置:
    sudo /opt/bitnami/apache2/bin/httpd -t -D DUMP_VHOSTS
    
    确认输出中没有和你使用的端口(如49155/49156)冲突的配置。
  • 若你计划通过Apache反向代理访问ASP.NET程序,需确保Apache未直接绑定目标端口,而是配置反向代理指向Kestrel的端口。

5. 排查重复的端口配置

检查appsettings.json或appsettings.Development.json中是否存在Urls配置,例如:

{
  "Urls": "https://[::]:49156"
}

如果存在该配置,会和你在Program.cs中设置的端口产生冲突,需删除或统一端口号。

内容的提问来源于stack exchange,提问作者slastine

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 01:50:04