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

.NET API在Swagger正常但React Native Expo模拟器无法调用问题

排查方向与解决方案

1. API地址与网络绑定配置问题

  • 检查React Native请求代码中的API地址:如果用的是localhost,Android模拟器会将其解析为自身而非你的电脑,需替换为电脑的局域网IP(如http://192.168.1.100:5000),或Android模拟器专用的10.0.2.2(映射主机的localhost)。
  • 确认.NET API的绑定地址:在Program.cs或launchSettings.json中,确保API绑定到0.0.0.0而非仅localhost,否则局域网内的模拟器/网页端无法访问。例如在Program.cs中添加:
    builder.WebHost.UseUrls("http://0.0.0.0:5000");
    

2. CORS跨域配置验证

  • 检查Program.cs中的CORS规则:确认是否允许了React Native网页端/模拟器的请求源。若仅限制了特定端口(如Swagger的端口),需添加expo默认端口(如http://localhost:19006)或直接允许所有源测试(生产环境不建议):
    builder.Services.AddCors(options =>
    {
        options.AddPolicy("AllowAll", policy =>
        {
            policy.AllowAnyOrigin()
                  .AllowAnyMethod()
                  .AllowAnyHeader();
        });
    });
    app.UseCors("AllowAll"); // 注意要放在UseRouting之后、UseAuthorization之前
    
  • 验证CORS中间件顺序:错误的顺序会导致跨域规则不生效,必须保证UseCors在路由和授权中间件之前执行。

3. 本地防火墙/安全软件拦截

  • 临时关闭电脑防火墙:若关闭后请求正常,说明防火墙拦截了API端口的入站请求,需手动添加规则允许该端口(如5000)的HTTP流量。
  • 排查杀毒软件/网络安全工具:部分安全软件会默认拦截本地服务的外部请求,可暂时禁用后测试。

4. Expo网页端代理配置

  • 若网页端请求失败,可在app.json中配置代理,将API请求转发到本地服务:
    {
      "expo": {
        "web": {
          "proxy": "http://your-local-ip:5000"
        }
      }
    }
    
  • 配置后请求路径可简化为/api/xxx,无需完整域名。

5. Android模拟器网络测试

  • 在模拟器内置浏览器中直接访问API地址(如http://192.168.1.100:5000/api/values),如果无法打开,说明模拟器与主机网络不通,需检查模拟器网络模式(优先用NAT模式)。
  • 重启模拟器或重置网络设置,排除模拟器自身的网络异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 19:22:50