用localhost:port可以访问,使用本机ip192.168.0.138:port显示 已拒绝连接。Kestrel

当你在本地开发环境中遇到“用 localhost 可以访问,但用本机 IP(如 192.168.0.138)时被拒绝连接”的问题时,可能是以下原因导致的:

1. 检查 Kestrel 绑定的 IP 地址

默认情况下,ASP.NET Core 的 Kestrel 服务器只绑定到 localhost(即 127.0.0.1)。这意味着它只接受来自本地计算机的请求,而拒绝来自其他 IP 地址的请求。

解决方法:

Program.cs 中,明确配置 Kestrel 监听所有 IP 地址,或指定你的本机 IP 地址。

例如,添加 UseUrls 来配置 Kestrel 监听所有网络接口:

var builder = WebApplication.CreateBuilder(args); 
// http://0.0.0.0:5000 表示 Kestrel 监听所有 IP 地址上的 5000 端口。
builder.WebHost.UseUrls("http://0.0.0.0:5000"); // 或者指定本机IP "http://192.168.0.138:5000" 
// 配置 Kestrel 服务器以监听所有 IP 地址和端口 
builder.WebHost.ConfigureKestrel(serverOptions => 
{ 
    // 监听所有 IP 地址和指定端口(例如:5000) 
    serverOptions.ListenAnyIP(5000); 
    // 或者,你可以添加多个监听端口 
    serverOptions.ListenAnyIP(5001);       
    serverOptions.ListenAnyIP(5002); 
    // 监听所有 IP 地址的任意可用端口 
    // 如果需要动态分配端口(不推荐),可以使用以下代码: 
    // serverOptions.ListenAnyIP(0); // 0 表示由操作系统动态分配端口 
});
var app = builder.Build(); 
// 其他配置... 
app.Run(); 

这样,Kestrel 将监听所有网络接口(包括本地和网络 IP 地址),而不仅仅是 localhost

注意:监听大量端口可能会耗尽系统资源并导致安全隐患。这通常不是一个推荐的做法,尤其是在生产环境中。

2. 检查防火墙设置

Windows 防火墙或其他防火墙软件可能阻止了来自本机 IP 地址的连接。

解决方法:
  • 打开 Windows 防火墙设置,检查是否允许你的应用程序或 Kestrel 通过防火墙。
  • 如果使用第三方防火墙,请确保它不会阻止端口 5000(或其他你使用的端口)的连接。

3. 确保没有其他服务占用了同一端口

确认没有其他服务占用了你配置的端口。例如,确保没有其他服务在端口 5000 上运行,导致 Kestrel 无法正确绑定。

解决方法:
  • 通过命令行检查端口占用情况:
    netstat -an | findstr :5000 
  • 如果端口被占用,尝试更改端口号或关闭占用该端口的服务。

4. 网络配置问题

如果你的计算机连接到多个网络(例如有线和无线),确保你访问的 IP 地址是当前网络下的正确 IP 地址。

解决方法:
  • 使用 ipconfig 命令检查当前网络下的正确 IP 地址。
  • 确保没有网络适配器设置错误或 IP 地址冲突。

5. 使用 http://localhost:5000 测试

首先使用 localhost 测试你的应用程序。如果 localhost 可以工作但 IP 地址不行,请重点检查上面提到的 Kestrel 配置和防火墙设置。

  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值