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

Expo应用无法向.NET 6 Web Api后端发起Axios GET请求

解决Expo前端连接ASP.NET 6后端超时问题

1. 修正CORS配置错误

你的CORS代码里重复写了AllowAnyHeader(),缺少允许HTTP方法的配置,这会导致后端拒绝非OPTIONS的请求。修正后的代码:

builder.Services.AddCors(policyBuilder =>
    policyBuilder.AddDefaultPolicy(policy =>
        policy.WithOrigins("*")
              .AllowAnyHeader()
              .AllowAnyMethod()) // 替换重复的AllowAnyHeader为AllowAnyMethod
);
var app = builder.Build();
// 确保UseCors放在正确的中间件顺序:在UseAuthorization和MapControllers之前
app.UseCors();
app.UseAuthorization();
app.MapControllers();

2. 确认后端监听地址与防火墙放行

  • 检查launchSettings.json中的applicationUrl是否为http://[你的IPv4]:[端口号],确保不是仅监听localhost或127.0.0.1。
  • 打开Windows防火墙,添加入站规则,允许后端使用的端口通过TCP连接(比如端口5000)。
  • 用命令netstat -ano | findstr :[端口号]验证后端是否在监听指定的IPv4地址,确保输出中包含你的IPv4(而非仅127.0.0.1)。

3. 修正Expo端请求配置

  • 确保请求URL使用电脑的IPv4地址,不要用localhost,比如:http://192.168.1.100:5000/api/xxx。
  • iOS 14+默认阻止HTTP请求,需在app.json中添加配置允许HTTP访问你的后端地址:
{
  "expo": {
    "ios": {
      "infoPlist": {
        "NSAppTransportSecurity": {
          "NSExceptionDomains": {
            "192.168.1.100": { // 替换为你的电脑IPv4
              "NSIncludesSubdomains": true,
              "NSExceptionAllowsInsecureHTTPLoads": true
            }
          }
        }
      }
    }
  }
}

开发环境下也可以临时允许所有HTTP请求(仅用于测试,正式环境禁用):

"NSAppTransportSecurity": {
  "NSAllowsArbitraryLoads": true
}

4. 排查网络环境问题

  • 检查路由器是否开启了AP隔离功能,该功能会阻止同一WiFi下设备之间的通信,需要关闭此设置。
  • 在iOS设备的浏览器中直接访问后端API地址(比如http://192.168.1.100:5000/api/values),如果浏览器也无法访问,说明是网络或后端配置问题;如果浏览器能访问,再排查Expo的请求代码。

5. 验证请求代码正确性

确保请求路径和后端路由完全匹配,比如后端路由是[Route("api/[controller]")],控制器是ValuesController,则请求路径应为/api/values。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 03:50:17