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

Flutter连接本地C# API遇超时/连接拒绝问题求助

排查Flutter连接本地C# API的连接拒绝问题

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

1. 确认C# API的绑定地址

Postman能访问但Flutter不行,大概率是API仅绑定了localhost,未监听局域网私有IP或所有网卡:

  • 修改API的Kestrel配置,在Program.cs中添加:
    builder.WebHost.ConfigureKestrel(options =>
    {
        // 监听所有网卡的指定端口,或替换为你的私有IP(如192.168.1.100)
        options.ListenAnyIP(5000); 
    });
    
  • 或者修改Properties/launchSettings.json中的applicationUrl,将localhost替换为0.0.0.0或你的私有IP:
    "applicationUrl": "http://0.0.0.0:5000;https://0.0.0.0:5001"
    

修改后重启API服务。

2. 验证设备网络连通性

  • 确保运行Flutter的设备(手机/模拟器)和API所在电脑处于同一局域网,检查两者IP网段是否一致(比如都是192.168.1.x)。
  • 在Flutter设备的浏览器中直接访问API的私有IP+端口+接口路径(如http://192.168.1.100:5000/api/test),如果无法访问,优先解决网络连通性问题。

3. 检查Flutter请求配置

  • 确认请求URL完全正确:私有IP、端口、接口路径需和Postman中的一致,避免拼写错误。示例:
    final response = await http.get(
      Uri.parse('http://192.168.1.100:5000/api/your-endpoint'),
      // 可适当延长超时时间排除短超时问题
      timeout: const Duration(seconds: 15),
    );
    
  • 如果API启用了HTTPS,需确保Flutter端信任自签名证书(若使用自签证书),或暂时改用HTTP测试。

4. 排查第三方安全软件拦截

即使关闭了系统防火墙,第三方杀毒软件、安全工具(如360、腾讯电脑管家等)的内置防火墙可能仍在拦截请求,建议暂时关闭这类软件后重试。

5. 模拟器特殊场景处理

  • 若使用Android模拟器,除私有IP外,也可尝试用10.0.2.2映射电脑的localhost,但前提是API已绑定0.0.0.0。
  • 用模拟器自带浏览器测试API地址,确认模拟器能正常访问局域网资源。

6. 检查CORS配置(可选)

Postman不受CORS限制,但Flutter作为客户端可能触发拦截(可能间接导致连接异常)。在C# API中配置允许跨域:

builder.Services.AddCors(options =>
{
    options.AddPolicy("AllowLocalFlutter", policy =>
    {
        policy.WithOrigins("http://localhost:8080", "http://192.168.1.x:8080") // Flutter设备IP或端口
              .AllowAnyMethod()
              .AllowAnyHeader();
    });
});

// 在中间件链中添加CORS(需在UseRouting之后,UseAuthorization之前)
app.UseCors("AllowLocalFlutter");

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 16:05:01