Android调用本地.NET Core API时出现Axios网络超时错误求助
解决React Native调用.NET Core API超时问题
检查.NET Core后端的监听地址
默认情况下,.NET Core可能只绑定localhost,导致模拟器/真机无法访问。修改配置让后端监听所有IP:- 对于.NET 6+,修改
Program.cs:var builder = WebApplication.CreateBuilder(args); // 其他服务配置... var app = builder.Build(); // 让后端监听所有IP的5004端口 app.Run("http://0.0.0.0:5004"); - 或者修改
launchSettings.json里的applicationUrl:"profiles": { "http": { "commandName": "Project", "dotnetRunMessages": true, "launchBrowser": true, "applicationUrl": "http://0.0.0.0:5004", "environmentVariables": { "ASPNETCORE_ENVIRONMENT": "Development" } } }
- 对于.NET 6+,修改
确认网络环境匹配
- Android模拟器用
10.0.2.2映射宿主机,但要确保电脑防火墙/杀毒软件没拦截5004端口。 - 用真机测试的话,必须替换成电脑的局域网IP(比如
192.168.1.100:5004),且真机和电脑连同一个WiFi。
- Android模拟器用
调整Axios超时时间
默认Axios超时可能太短,手动设置更长时长,同时打印更详细的错误信息:export const addNewMember = async (newMember: Member) => { Alert.alert('10'); try { const response = await axios.post( 'http://10.0.2.2:5004/Members', newMember, { headers: { 'content-type': 'application/json', }, timeout: 10000 // 设置10秒超时 } ); Alert.alert('2'); return response.data; } catch (error) { Alert.alert('3'); // 打印更具体的错误内容,方便排查 console.error(error.response?.data || error.message || error); throw error; } };开启.NET Core日志排查请求
在appsettings.Development.json中开启详细日志,确认后端是否收到请求:"Logging": { "LogLevel": { "Default": "Information", "Microsoft.AspNetCore": "Debug" } }启动后端后查看控制台日志,检查有没有来自React Native的请求记录。
确认CORS配置正确
虽然Postman能正常调用,但React Native属于跨域请求,确保.NET Core已配置CORS:var builder = WebApplication.CreateBuilder(args); // 添加CORS服务 builder.Services.AddCors(options => { options.AddPolicy("AllowAll", policy => { policy.AllowAnyOrigin() .AllowAnyMethod() .AllowAnyHeader(); }); }); var app = builder.Build(); // 必须在路由中间件之前使用CORS app.UseCors("AllowAll"); // 其他中间件和路由配置...
内容的提问来源于stack exchange,提问作者Sandeep Thomas
相关产品推荐
相关产品推荐

