我的.NET MAUI安卓应用无法访问网络?求排查建议
解决.NET MAUI安卓模拟器无法访问localhost API的问题
问题核心
安卓模拟器里的localhost或127.0.0.1指向模拟器自身系统,而非运行后端API的电脑主机,所以Windows上能正常访问的https://localhost:7239,在模拟器里找不到对应服务。
具体解决步骤
方法1:替换为电脑的局域网IP
- 找到电脑的局域网IPv4地址:Windows按Win+R输入
cmd,执行ipconfig,在“以太网适配器”或“无线局域网适配器”下找到IPv4地址(比如192.168.3.105) - 修改代码中的URL:
var result = await client.GetStringAsync("https://192.168.3.105:7239/products/"); - 补充:确保你的API服务绑定到
0.0.0.0或该局域网IP,否则会拒绝外部访问。ASP.NET Core项目可以在launchSettings.json里把applicationUrl改成https://0.0.0.0:7239;http://0.0.0.0:5239
方法2:用安卓模拟器专属回环地址
如果用的是Android Studio自带的模拟器,直接用10.0.2.2代替localhost:
var result = await client.GetStringAsync("https://10.0.2.2:7239/products/");
这个地址是安卓模拟器官方定义的,专门用来映射主机的localhost。
额外必查项
跨域配置:如果API是ASP.NET Core,必须允许跨域请求,否则会被拦截。在
Program.cs中添加:builder.Services.AddCors(options => { options.AddPolicy("AllowEmulator", policy => { policy.WithOrigins("http://10.0.2.2:7239", "https://192.168.3.105:7239") // 替换成你的实际地址 .AllowAnyMethod() .AllowAnyHeader(); }); }); app.UseCors("AllowEmulator");新手可以先改用
AllowAnyOrigin()的宽松配置测试,确认可用后再缩小范围。防火墙放行:检查电脑防火墙是否允许7239端口的入站连接,临时关闭防火墙测试,没问题后再添加对应端口的允许规则。
HTTPS证书问题:自签名HTTPS证书在模拟器里会被视为不安全,导致连接失败。可以先改用HTTP测试(把URL里的
https改成http),后续再处理证书安装。
内容的提问来源于stack exchange,提问作者Casper
相关产品推荐
相关产品推荐

