求助:如何让物理安卓设备访问本地.NET Core API(附故障场景与配置信息)
求助:如何让物理安卓设备访问本地.NET Core API(附故障场景与配置信息)
问题场景
我最近遇到个棘手的问题:用.NET Core搭了个本地API,配套的Flutter应用在安卓模拟器上调用这个API完全正常,但把APK装到物理安卓设备上之后,就死活连不上API了,试了好几种方法都没解决,来求各位大佬支招!
我的.NET Core项目launchSettings.json里的相关配置如下:
"http.DevelopmentForEmulator": { "commandName": "Project", "dotnetRunMessages": true, "launchBrowser": false, "launchUrl": "swagger", "applicationUrl": "http://0.0.0.0:5046", "environmentVariables": { "ASPNETCORE_ENVIRONMENT": "Production" } }
实用解决步骤
- 确认设备与电脑在同一局域网:物理安卓设备和运行API的电脑必须连接同一个WiFi(如果电脑用有线,得确保有线网络和WiFi属于同一局域网),这是能互相访问的基础前提!
- 替换API请求地址为电脑局域网IP:模拟器里的
localhost或10.0.2.2能映射到本地,但物理设备不支持,一定要把Flutter代码里的API地址改成电脑的局域网IPv4地址(比如http://192.168.1.105:5046)。查询方法:Windows开命令提示符输入ipconfig,找对应网卡的IPv4地址;Mac/Linux在终端输入ip addr或ifconfig即可。 - 给API端口放行防火墙:Windows Defender防火墙或第三方防火墙大概率会拦截物理设备的请求,需要手动添加入站规则,允许TCP协议的5046端口通过;也可以临时关闭防火墙测试(测试完成后记得重新开启,保障电脑安全)。
- 验证API的启动配置是否正确:你配置里的
0.0.0.0是正确的(代表监听所有网卡的请求),但要确保启动API时用的是http.DevelopmentForEmulator这个配置项,启动后可以查看控制台输出,确认监听地址确实是http://0.0.0.0:5046。 - 关闭路由器的客户端隔离功能:部分路由器默认开启「AP隔离」或「客户端隔离」,会阻止同一WiFi下的设备互相访问,需要进入路由器管理后台(通常是
192.168.1.1或192.168.0.1),找到该功能并关闭。
内容来源于stack exchange
相关产品推荐
相关产品推荐

