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

.NET MAUI应用在Android模拟器调用Web API时连接失败求助

解决Android模拟器中MAUI应用调用本地.NET Web API的连接问题

核心原因

Android模拟器拥有独立网络环境,localhost指向模拟器自身而非宿主机;直接使用本地IP可能受防火墙、HTTPS证书或模拟器网络配置限制,导致连接失败。

具体修复步骤

1. 使用模拟器专属宿主机地址

  • Google官方Android模拟器中,宿主机回环地址的映射为10.0.2.2,将API地址修改为https://10.0.2.2:7107
  • 若使用Genymotion模拟器,替换为10.0.3.2

2. 配置Web API允许跨域访问

在Web API项目的Program.cs中添加跨域策略:

builder.Services.AddCors(options =>
{
    options.AddPolicy("AllowAll", policy =>
    {
        policy.AllowAnyOrigin()
              .AllowAnyMethod()
              .AllowAnyHeader();
    });
});

// 注意:需放在app.UseRouting()之后、app.UseAuthorization()之前
app.UseCors("AllowAll");

3. 处理HTTPS证书信任问题

  • 临时测试方案:将Web API切换为HTTP协议(修改启动配置,端口设为5107,API地址改为http://10.0.2.2:5107)
  • 保留HTTPS方案:将本地开发证书安装到模拟器
    1. 找到证书文件:一般路径为%USERPROFILE%\.aspnet\https\<项目名称>.pem
    2. 用adb命令推送证书到模拟器:adb push <证书完整路径> /sdcard/
    3. 在模拟器设置中进入「安全-加密与凭据-从存储安装」,选择推送的证书完成安装

4. 检查防火墙规则

  • 确保Windows防火墙允许Web API使用的端口(7107)通过私有/公共网络
  • 若使用第三方杀毒软件防火墙,需同步添加对应端口的允许规则

5. 验证网络连通性

在模拟器内置浏览器中访问http://10.0.2.2:7107/swagger:

  • 能正常加载Swagger页面:说明网络通路正常,问题出在MAUI代码配置
  • 无法加载:检查API是否正常运行、端口是否配置正确、防火墙是否放行

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 23:47:11