React Native调用.NET Core 7 API遇Axios Network Error求助
React Native调用.NET Core API出现Network Error的排查与解决建议
一、本地网络访问适配
- 别直接用
localhost:React Native模拟器/真机没法直接访问电脑的localhost。Android Studio模拟器换10.0.2.2,iOS模拟器可以用localhost或者电脑局域网IP;如果是真机,必须用电脑的局域网IP(比如192.168.x.x),同时保证手机和电脑连同一WiFi。 - 确认API端口:检查.NET Core启动日志,确保服务确实监听
7262端口,日志会显示类似Now listening on: https://localhost:7262的内容。
二、HTTPS与跨域问题处理
1. HTTPS证书信任
- React Native默认不信任自签名HTTPS证书,开发阶段可以临时禁用SSL验证(仅开发用,生产别这么搞):在Axios请求里加
httpsAgent: new https.Agent({ rejectUnauthorized: false }),或者直接改用HTTP调试。 - 也可以给模拟器/真机安装.NET Core开发证书:Windows执行
dotnet dev-certs https --trust,Mac执行sudo security add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain ~/.aspnet/https/aspnetapp.pfx(替换成你的实际证书路径)。
2. CORS配置验证
- 确认.NET Core的
Program.cs里配置了CORS,允许React Native的请求:
注意这段代码要放在builder.Services.AddCors(options => { options.AddPolicy("AllowAll", policy => { policy.AllowAnyOrigin() .AllowAnyMethod() .AllowAnyHeader(); }); }); app.UseCors("AllowAll");UseRouting之后、UseAuthorization之前。
三、Axios配置检查
- 核对
fetchApi.js里的baseURL:比如Android模拟器要写成https://10.0.2.2:7262/api,真机用电脑局域网IP。 - 排查请求拦截器或请求头:有没有加不必要的Authorization头导致请求被拦截,先写最简请求测试排除干扰:
import axios from 'axios'; import https from 'https'; const agent = new https.Agent({ rejectUnauthorized: false }); const testApi = async () => { try { const response = await axios.get('https://10.0.2.2:7262/api/products', { httpsAgent: agent }); console.log(response.data); } catch (err) { console.error(err); } };
四、环境与依赖校验
- 检查
.env文件的API_URL:有没有拼写错误,比如多写斜杠、端口不对。 - 确认
Package.json的axios版本:尽量用稳定版本(比如1.6.0以上),避免版本兼容问题。
五、API控制器路由检查
- 查看
ProductsController.cs的路由配置:确保前缀正确,比如:[ApiController] [Route("api/[controller]")] // 对应api/products路由 public class ProductsController : ControllerBase { [HttpGet] public IActionResult GetProducts() { // 业务代码 return Ok(new List<Product>()); } } - 用Postman直接调用
https://localhost:7262/api/products,确认API本身能正常返回数据,排除服务端问题。
六、调试日志排查
- 用
console.log打印Axios实际请求的URL,确认地址是否正确。 - 打开React Native调试工具的Network面板,查看请求的详细错误(比如连接超时、证书错误、404等)。
- Android用
adb logcat看系统网络日志,iOS用Xcode控制台查网络错误详情。
内容的提问来源于stack exchange,提问作者Ahmed Tayyib Kaya
相关产品推荐
相关产品推荐

