React Native iOS调用.NET Minimal API超时,Node.js服务正常问题排查
解决React Native iOS调用.NET Minimal API超时问题的建议
确认.NET服务的监听地址与端口
不要只依赖launchSettings.json的配置,直接在代码里显式绑定地址:var builder = WebApplication.CreateBuilder(args); // 确保绑定到所有网卡的5056端口 builder.WebHost.UseUrls("http://0.0.0.0:5056");然后用系统命令验证监听状态:
- Windows:
netstat -ano | findstr :5056,确认输出包含0.0.0.0:5056 - Mac/Linux:
lsof -i :5056,检查LISTEN状态的地址是否为*:5056
- Windows:
排查防火墙拦截
电脑防火墙可能允许了Node.js进程,但未放行.NET的dotnet进程:- Windows:打开Windows Defender防火墙,添加入站规则,允许TCP端口5056的连接
- Mac:进入「系统设置-网络-防火墙」,点击「选项」,允许
dotnet进程通过防火墙
验证服务本身的可用性
在电脑浏览器直接访问http://192.168.10.180:5056/[你的接口路径],确认能正常返回响应。如果电脑本地用IP访问都失败,说明.NET服务的绑定配置仍有问题,和React Native无关。检查CORS配置的正确性
确保Minimal API的CORS中间件位置正确(必须在UseRouting之后、UseAuthorization之前):builder.Services.AddCors(options => { options.AddPolicy("AllowLocalDevices", policy => { policy.WithOrigins("http://localhost:8081", "exp://*") // 适配React Native的调试地址 .AllowAnyMethod() .AllowAnyHeader(); }); }); var app = builder.Build(); app.UseRouting(); app.UseCors("AllowLocalDevices"); // 位置不能错 app.UseAuthorization(); app.MapControllers();排除网络连通性问题
- 确认iOS设备和电脑在同一WiFi网络,且设备未开启VPN/代理(VPN会导致流量走外部网络,无法访问本地IP)
- 在iOS设备上用终端工具(如Terminus)执行
ping 192.168.10.180,如果ping不通,检查路由器是否开启了AP隔离(部分路由器默认开启,会阻止设备间通信)
测试HTTP/HTTPS协议匹配
如果.NET服务启用了HTTPS,iOS设备会因为自签名证书不信任导致超时。可以先暂时改成HTTP测试,或者在iOS项目的Info.plist中添加ATS例外:<key>NSAppTransportSecurity</key> <dict> <key>NSAllowsArbitraryLoads</key> <true/> </dict>
内容的提问来源于stack exchange,提问作者thelittlemaster
相关产品推荐
相关产品推荐

