net网页同时监听 IPv4 + IPv6
我开启了localhost:5000的端口服务器 为什么 IPv4 地址 . . . . . . . . . . . . : 192.168.2.107 尽管我的ipv4是192.168. 但是访问192.168.:5000 无响应
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
webBuilder.UseUrls("http://[::]:5000");
});
你现在的监听写法:
webBuilder.UseUrls("http://[::]:5000");
只绑定了 IPv6 通配符 ::,在 部分 Windows 版本或机器 上会导致 IPv4 地址 192.168.2.107:5000 无法访问(浏览器/手机直接超时)。
✅ 正确写法:同时监听 IPv4 + IPv6
把 UseUrls 改成下面任意一种即可:
方法 1:显式写两条
webBuilder.UseUrls("http://0.0.0.0:5000", "http://[::]:5000");
方法 2:简写一条(更推荐)
webBuilder.UseUrls("http://*:5000"); // Kestrel 会自动在 IPv4/IPv6 双栈监听
✅ 完整示例
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
webBuilder.UseUrls("http://*:5000"); // ← 关键改动
});
🔍 验证
- 重新
dotnet run - 打开命令行执行:
应看到:netstat -ano | findstr 5000TCP 0.0.0.0:5000 0.0.0.0:0 LISTENING TCP [::]:5000 [::]:0 LISTENING - 在手机/局域网另一台电脑访问
http://192.168.2.107:5000,此时即可正常响应。
⚠️ 额外检查(如果仍不通)
- 防火墙:确认已放行 TCP 5000(见上一回合的 PowerShell 命令)。
- 路由器 AP 隔离:关闭或确认两台设备处于同一网段(192.168.2.x)。
按此修改即可解决 “IPv4 地址无法访问 5000 端口” 的问题。