React Native调用ASP.NET API时持续返回网络错误求助
React Native (Expo iOS) 调用 ASP.NET API 报 "Network request failed" 解决方案
1. 替换 localhost 为电脑局域网IP,同时让API监听所有地址
iOS真机上的localhost指向设备自身,而非你的开发电脑,必须使用电脑的局域网IP(可通过ipconfig/ifconfig查询)。另外ASP.NET默认仅监听localhost,外部设备无法访问,需修改配置:
- 打开项目的
Properties/launchSettings.json,将applicationUrl修改为:
"applicationUrl": "https://0.0.0.0:7287;http://0.0.0.0:5287"
- 重启API服务,先在手机Safari中访问
https://你的电脑IP:7287/get,确认能返回"test"再继续调试。
2. 解决iOS不信任自签名HTTPS证书问题
开发环境的ASP.NET使用自签名证书,iOS真机默认会拒绝信任这类证书,直接导致请求失败:
- 方案一:安装并信任证书
- 电脑浏览器打开
https://localhost:7287,从地址栏的锁图标中导出证书。 - 通过AirDrop或邮件将证书发送到iOS手机,点击安装后,进入「设置」→「通用」→「VPN与设备管理」,手动信任该证书。
- 电脑浏览器打开
- 方案二:开发阶段临时启用HTTP
嫌证书配置麻烦可改用HTTP,需两步操作:- 注释ASP.NET代码中的
//app.UseHttpsRedirection();,确保API能响应HTTP请求。 - 修改Expo项目的
app.json,添加iOS网络权限配置:
"ios": { "infoPlist": { "NSAppTransportSecurity": { "NSAllowsArbitraryLoads": true } } }- 将React Native的fetch URL改为
http://你的电脑IP:5287/get。
- 注释ASP.NET代码中的
3. 检查网络与防火墙设置
- 确保手机和开发电脑连接同一WiFi网络,否则无法建立局域网连接。
- 临时关闭电脑防火墙测试,若能正常访问,再去防火墙中添加7287/5287端口的入站放行规则。
4. 修正fetch请求的细节问题
你的API返回的是纯字符串"test",使用res.json()会解析报错,需改用res.text();同时路径尽量与接口定义保持一致(ASP.NET路由不区分大小写,但避免不必要的问题):
let getEmployees = () => { fetch("https://你的电脑IP:7287/Get") .then((res) => { console.log(res.status); return res.text(); // 用text()解析纯字符串返回值 }) .then( (result) => { console.log(result); }, (error) => { console.log(error); } ); };
内容的提问来源于stack exchange,提问作者ali amr
相关产品推荐
相关产品推荐

