React Native(Expo Go)调用本地.NET WebAPI报Network request failed错误求助
解决React Native Expo Go无法访问本地.NET WebAPI的问题
排查与修复步骤
1. 修正后端API的绑定地址
.NET WebAPI默认可能仅绑定localhost或127.0.0.1,导致仅本地能访问,局域网设备无法连接:
- 打开后端项目
Properties目录下的launchSettings.json,修改applicationUrl为局域网IP+端口:"applicationUrl": "https://192.168.8.100:7036;http://192.168.8.100:5036" - 或者启动后端时通过命令行指定地址:
dotnet run --urls "https://192.168.8.100:7036;http://192.168.8.100:5036"
2. 处理HTTPS证书信任问题
本地自签名SSL证书不会被Expo Go默认信任,引发请求失败:
- 临时方案:改用HTTP访问后端(需确保后端已开启HTTP端口)。
- 永久方案:将本地证书安装到手机:
- 用电脑浏览器打开
https://192.168.8.100:7036,下载证书文件。 - 将证书发送到手机,在系统设置中找到证书安装选项,完成安装并设置为信任(不同品牌手机路径略有差异)。
- 用电脑浏览器打开
3. 确保请求URL正确
代码中必须使用局域网IP+端口,不能用localhost或127.0.0.1(手机上的localhost指向自身而非电脑),示例代码:
fetch('http://192.168.8.100:7036/api/your-endpoint') .then(res => res.json()) .then(data => console.log(data)) .catch(err => console.error(err));
4. 检查电脑防火墙规则
确认防火墙允许.NET WebAPI的端口(7036)通过局域网访问:
- 打开Windows Defender防火墙高级设置。
- 添加入站规则,允许TCP端口7036的连接,适用范围设为当前专用网络。
5. 配置Expo网络权限
在项目的app.json或app.config.js中添加必要权限:
"ios": { "infoPlist": { "NSAppTransportSecurity": { "NSAllowsArbitraryLoads": true // 仅开发环境使用,上线需调整为特定域名例外 } } }, "android": { "permissions": ["INTERNET"] }
内容的提问来源于stack exchange,提问作者Christopher Dyja
相关产品推荐
相关产品推荐

