如何将React Native Expo应用连接到本地运行的ASP .NET Core后端API?
解决Expo应用连接本地.NET Core API的问题
一、先验证请求是否真的未到达服务器
- 给你的
get-all-users接口加日志输出,直接看控制台是否有反馈:
运行API后触发Expo的请求,若控制台没打印这条日志,说明请求确实没到服务器;反之则问题出在响应处理环节。[HttpGet("get-all-users")] public IActionResult GetAllUsers() { Console.WriteLine("接口已收到请求"); // 原有业务逻辑... } - 用Postman直接访问
http://你的电脑局域网IP:5225/LoLCaller/get-all-users,如果Postman也无法获取响应,优先排查API本身的可访问性。
二、.NET Core API的关键配置
开启跨域(CORS)支持
Expo应用属于跨域请求,必须在API中配置CORS:- 在
Program.cs添加CORS服务:builder.Services.AddCors(options => { options.AddPolicy("AllowExpo", policy => policy.AllowAnyOrigin() // 开发环境可临时用这个,生产环境需限制具体域名 .AllowAnyMethod() .AllowAnyHeader()); }); - 在中间件链中启用CORS(注意顺序要在
UseRouting之后、UseAuthorization之前):app.UseCors("AllowExpo");
- 在
绑定局域网IP地址
默认.NET Core可能仅绑定localhost,导致其他设备无法访问:- 方法一:修改
Properties/launchSettings.json,在applicationUrl中添加你的电脑局域网IP:"applicationUrl": "http://localhost:5225;http://192.168.x.x:5225" - 方法二:用命令行启动API时指定绑定所有IP:
dotnet run --urls=http://0.0.0.0:52250.0.0.0表示绑定所有可用网络接口,同一局域网的设备就能访问API。
- 方法一:修改
放行Windows防火墙端口
Windows防火墙可能拦截了5225端口的外部请求:- 打开「Windows Defender防火墙」→「高级设置」
- 新建入站规则:允许TCP协议的5225端口通过,应用到域、专用、公网(开发环境可全选)
三、Expo端的注意事项
- 确保请求地址中的
localhost已替换为电脑的局域网IP(如192.168.1.100),不要用127.0.0.1 - 开发环境优先用HTTP测试,HTTPS需要处理Expo对自签名证书的信任问题,会增加排查复杂度
- 确认Expo设备(手机/模拟器)和电脑处于同一WiFi网络,不要用移动数据
四、快速排查流程
- 用Postman验证API的局域网IP地址可正常访问
- 检查API是否配置了CORS并绑定了正确IP
- 确认Windows防火墙已放行5225端口
- 核对Expo的请求地址是否正确
内容的提问来源于stack exchange,提问作者Skorejen
相关产品推荐
相关产品推荐

