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

从Expo项目调用ASP.NET Core Web API遇网络错误,求解决方案

解决Expo调用ASP.NET Core API的Network Error问题

以下是针对你遇到问题的具体排查和解决步骤:

1. 修正API访问地址

localhost仅在电脑本地有效,模拟器/真机无法直接通过它访问电脑上的后端:

  • Android模拟器:替换localhost为10.0.2.2(Android模拟器默认映射电脑本地回环的地址),示例URL:https://10.0.2.2:5001/api/NguoiDung
  • iOS模拟器:可以直接使用localhost,但如果是HTTPS连接需要处理证书问题
  • 真机设备:使用电脑的局域网IP地址(比如192.168.1.105,可通过ipconfig/ifconfig查询),示例URL:https://192.168.1.105:5001/api/NguoiDung

2. 处理HTTPS证书信任问题

ASP.NET Core开发环境的自签名证书不会被移动设备信任,这是常见的网络错误原因:

  • 临时改用HTTP(开发环境):
    打开后端项目的Properties/launchSettings.json,将applicationUrl改为HTTP地址(比如http://localhost:5000),同时更新Expo中的API URL为HTTP版本。
  • 信任开发证书:
    在电脑终端执行命令安装并信任证书:
    # Windows
    dotnet dev-certs https --trust
    # macOS
    sudo dotnet dev-certs https --trust
    
    真机设备需要手动安装证书(iOS需在「设置-通用-VPN与设备管理」中信任证书)。

3. 补全CORS中间件配置

你仅添加了CORS策略,但还需要在管道中启用它:
在Program.cs中,确保在UseRouting之后、UseAuthorization之前添加UseCors:

// 定义CORS策略名称
const string MyAllowSpecificOrigins = "_myAllowSpecificOrigins";

builder.Services.AddCors(options => {
    options.AddPolicy(name: MyAllowSpecificOrigins, 
                      policy => policy.AllowAnyOrigin()
                                        .AllowAnyMethod()
                                        .AllowAnyHeader());
});

// ...其他配置

app.UseRouting();

// 启用CORS策略
app.UseCors(MyAllowSpecificOrigins);

app.UseAuthorization();
// ...其他中间件

4. 添加Axios错误捕获

修改你的请求代码,添加错误捕获以获取更详细的错误信息:

const fetchUser = async () => {
  try {
    const url = `https://你的正确地址/api/NguoiDung`;
    const response = await axios.get(url);
    console.log(response.data);
  } catch (error) {
    console.error('请求失败:', error.message);
    if (error.response) {
      // 服务器返回了响应但状态码错误
      console.error('状态码:', error.response.status);
      console.error('响应内容:', error.response.data);
    } else if (error.request) {
      // 请求已发送但无响应
      console.error('请求详情:', error.request);
    }
  }
};

5. 检查防火墙与网络

  • 确保电脑防火墙允许5001端口(或HTTP的5000端口)的入站连接
  • 真机设备需和电脑处于同一WiFi局域网,尝试用真机浏览器访问API地址,确认是否能正常返回数据

内容的提问来源于stack exchange,提问作者Quốc Thiệu

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 11:49:51