.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方案:将本地开发证书安装到模拟器
- 找到证书文件:一般路径为
%USERPROFILE%\.aspnet\https\<项目名称>.pem - 用adb命令推送证书到模拟器:
adb push <证书完整路径> /sdcard/ - 在模拟器设置中进入「安全-加密与凭据-从存储安装」,选择推送的证书完成安装
- 找到证书文件:一般路径为
4. 检查防火墙规则
- 确保Windows防火墙允许Web API使用的端口(7107)通过私有/公共网络
- 若使用第三方杀毒软件防火墙,需同步添加对应端口的允许规则
5. 验证网络连通性
在模拟器内置浏览器中访问http://10.0.2.2:7107/swagger:
- 能正常加载Swagger页面:说明网络通路正常,问题出在MAUI代码配置
- 无法加载:检查API是否正常运行、端口是否配置正确、防火墙是否放行
内容的提问来源于stack exchange,提问作者Senthilkumar
相关产品推荐
相关产品推荐

