C# Maui应用无法调用本地ASP.NET Core Web API求助
排查ASP.NET Core Web API连接失败(10.0.2.2:5019)的方案
确认API服务是否正常启动
- 查看Web API项目的启动日志,确认服务是否成功绑定到5019端口,有无启动报错。可以在
Program.cs里明确指定端口监听:var builder = WebApplication.CreateBuilder(args); builder.WebHost.ConfigureKestrel(serverOptions => { serverOptions.ListenAnyIP(5019); // 允许所有IP访问指定端口 }); - 直接在本地浏览器或Postman中访问
http://localhost:5019/[你的接口路径],验证接口是否能正常返回数据。如果本地可访问,再排查跨端/虚拟机的网络问题。
- 查看Web API项目的启动日志,确认服务是否成功绑定到5019端口,有无启动报错。可以在
检查网络访问权限与端口映射
- 10.0.2.2是Android模拟器映射本地主机的默认IP,若你在模拟器中调用API,确认模拟器网络模式为默认桥接,无端口转发异常。可尝试在模拟器内访问
http://10.0.2.2:5019,测试是否能ping通或访问接口。 - 临时关闭本地防火墙或杀毒软件,这类工具可能拦截非本地来源的请求连接。
- 10.0.2.2是Android模拟器映射本地主机的默认IP,若你在模拟器中调用API,确认模拟器网络模式为默认桥接,无端口转发异常。可尝试在模拟器内访问
验证API的CORS配置
- 若之前模拟API配置了跨域,新API未配置可能间接导致请求被拦截。在
Program.cs中添加CORS配置:builder.Services.AddCors(options => { options.AddPolicy("AllowAll", policy => { policy.AllowAnyOrigin() .AllowAnyMethod() .AllowAnyHeader(); }); }); var app = builder.Build(); // 需在UseRouting之后、UseEndpoints之前调用 app.UseCors("AllowAll");
- 若之前模拟API配置了跨域,新API未配置可能间接导致请求被拦截。在
检查请求URL与接口定义
- 确认GET请求的URL是否正确,比如是否遗漏路由前缀(如
api/)、接口路径拼写是否有误。示例控制器与对应请求URL:
对应的请求URL应为[Route("api/[controller]")] [ApiController] public class DataController : ControllerBase { [HttpGet] public IActionResult GetData() { return Ok(new { Message = "Success" }); } }http://10.0.2.2:5019/api/data。
- 确认GET请求的URL是否正确,比如是否遗漏路由前缀(如
排查Kestrel的监听配置
- 检查
launchSettings.json中的应用URL配置,确保包含允许外部访问的地址:"profiles": { "http": { "commandName": "Project", "dotnetRunMessages": true, "launchBrowser": true, "applicationUrl": "http://localhost:5019;http://0.0.0.0:5019", "environmentVariables": { "ASPNETCORE_ENVIRONMENT": "Development" } } }
- 检查
内容的提问来源于stack exchange,提问作者Bilel
相关产品推荐
相关产品推荐

