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

ASP.NET Core 8.0无法绑定11111端口,启动时绑定80端口报错

问题:ASP.NET Core 8.0在树莓派arm64上绑定11111端口失败,却尝试绑定80端口

在arm64架构的树莓派上部署ASP.NET Core 8.0 Web服务,开发环境为Windows,发布arm64版本后复制到树莓派。所有配置都指定服务托管在11111端口,但启动时出现报错:

warn: Microsoft.AspNetCore.Server.Kestrel[0]
Overriding address(es) 'http://*.11111'. Binding to endpoints defined via IConfiguration and/or UseKestrel() instead.
fail: Microsoft.Extensions.Hosting.Internal.Host[11]
Hosting failed to start
System.IO.IOException: Failed to bind to address http://[::]:80: address already in use.

尝试多种重复配置方式,仍无法让服务托管在11111端口。

现有配置

appsettings.json内容:

{
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft.AspNetCore": "Warning"
    }
  },
  "AllowedHosts": "*",
  "urls": "http://*.11111;http://192.168.1.169:11111;http://localhost:11111;http://<MYDOMAIN>:11111;http://*:11111"
}

Program.cs内容:

var builder = WebApplication.CreateBuilder(args);

// Add services to the container.
Constants.LoadConstants();
builder.WebHost.UseUrls(new string[]
{
    "http://*.11111",
    "http://192.168.1.169:11111",
    "http://<MYDOMAIN>:11111",
    "http://0.0.0.0:11111",
    "http://*:11111"
});
builder.Services.AddControllers().AddJsonOptions(options =>
{
    options.JsonSerializerOptions.PropertyNamingPolicy = null;
});

var app = builder.Build();

// Configure the HTTP request pipeline.
app.Urls.Add("http://*.11111");
app.MapControllers();

app.Run();

应用中完全没有提及80端口,需解决该问题。


解决方案

1. 简化端口配置,消除优先级冲突

ASP.NET Core端口配置优先级为:命令行参数 > 环境变量 > UseUrls配置 > appsettings.json中的urls配置。你同时在多个地方重复配置端口,导致Kestrel触发覆盖警告,进而可能回退到默认端口80。

按以下步骤简化:

  • 删除appsettings.json中的urls节点
  • 删除Program.cs里的app.Urls.Add("http://*.11111");代码行
  • 保留builder.WebHost.UseUrls并简化为单一明确地址:
builder.WebHost.UseUrls("http://0.0.0.0:11111");

0.0.0.0表示监听所有网络接口,足以覆盖本地、局域网及域名访问场景,无需重复配置多个地址。

2. 排查树莓派80端口占用

报错显示80端口被占用,执行以下命令查看占用进程:

sudo lsof -i :80
# 或
sudo netstat -tulpn | grep :80

如果存在占用80端口的服务(如nginx、apache),停止对应服务或修改其端口。

3. 检查环境变量是否覆盖配置

树莓派上的ASPNETCORE_URLS环境变量可能被设置为:80,执行以下命令查看:

printenv | grep ASPNETCORE_URLS

若该变量存在且包含80端口,临时清除:

unset ASPNETCORE_URLS

如需永久生效,需修改树莓派的环境变量配置文件(如~/.bashrc或/etc/environment)。

4. 确认发布包配置文件正确性

确保发布到树莓派的appsettings.json是修改后的版本,避免Windows本地修改未同步到发布包,可重新发布并校验文件内容。

5. 命令行强制指定端口启动

若以上方法无效,启动时直接用命令行指定端口,强制覆盖所有配置:

dotnet YourAppName.dll --urls "http://0.0.0.0:11111"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 08:07:32