You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React Native Expo调用ASP.NET Core API桌面正常移动端失败求助

React Native Expo 调用 ASP.NET Core API 网络错误解决方案

问题概述

使用React Native Expo开发的移动端应用,调用ASP.NET Core 8 Web API时抛出Registration failed: Network Error错误。桌面端Postman通过IPv4地址调用API完全正常,且移动端能ping通该IPv4,但移动端Postman Web调用时出现:

Cloud Agent Error: Can not send requests to reserved address. Make sure address is publicly accessible or select a different agent.

已尝试移除后端UseHttpsRedirection()、配置宽松CORS策略,但问题仍未解决。

核心问题及修复步骤

1. 协议不匹配(最关键原因)

后端当前仅监听HTTP端口7009(未配置HTTPS),但前端请求使用了https://前缀,导致请求无法建立连接。

修改前端请求URL:
将sign-up.jsx中的请求地址从https://改为http://:

const response = await axios.post(
  "http://你的IPv4地址:7009/api/user/register",
  registrationData
);

2. Expo 网络权限配置

  • Android:确保app.json中添加网络权限:
    {
      "expo": {
        "android": {
          "permissions": ["INTERNET"]
        }
      }
    }
    
  • iOS:iOS 14+ 默认拦截非HTTPS请求,需在app.json中配置允许HTTP请求(仅开发环境使用,生产环境建议启用HTTPS):
    {
      "expo": {
        "ios": {
          "infoPlist": {
            "NSAppTransportSecurity": {
              "NSAllowsArbitraryLoads": true
            }
          }
        }
      }
    }
    

3. 后端防火墙与端口验证

确认后端机器的7009端口已在防火墙中开放,允许局域网内设备访问。可通过移动端工具执行telnet 你的IPv4地址 7009验证端口连通性。

4. 移动端Postman 代理切换

移动端Postman的Cloud Agent无法访问局域网内部IP,需切换到Local Agent(确保移动端与后端处于同一局域网),即可正常调用API。

后端代码验证(无需修改)

你的Program.cs配置已满足基础要求:

  • CORS策略AllowAnyOrigin()/AllowAnyHeader()/AllowAnyMethod()已覆盖跨域需求
  • Kestrel监听IPAddress.Any, 7009确保局域网设备可访问
  • 已注释UseHttpsRedirection()避免HTTPS强制跳转

内容的提问来源于stack exchange,提问作者Izabela Marinova

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 20:39:56