.NET Core 3.1调用API遇目标机器主动拒绝连接问题求助
问题排查与解决
错误信息
处理请求时发生未处理的异常。
SocketException: No connection could be made because the target machine actively refused it.
System.Net.Http.ConnectHelper.ConnectAsync(string host, int port, CancellationToken cancellationToken)
核心问题分析
从代码和场景来看,主要存在以下关键问题:
1. API端点完全不匹配
Web应用调用的是PostAsync("teams", ...),但你提供的API代码是处理Game的Post接口:
[HttpPost("Post")] public virtual ActionResult<GameDTO> Post(GameDTO gameDTO)
该接口路由为/Post,接收参数是GameDTO,和Web应用要实现的"添加Team"需求完全不匹配——API中根本没有对应/teams的Post端点。
2. BaseUri配置可能错误
Web应用中_baseUri的值如果未指向API实际运行的IIS Express地址(比如端口错误、协议不匹配,比如用http但API是https),会直接导致连接被拒绝。
具体解决方案
步骤1:添加正确的Team API端点
在API项目中新增处理Team新增的接口,确保路由和参数与Web应用调用逻辑匹配:
[HttpPost("teams")] public ActionResult<TeamDTO> AddTeam(TeamDTO teamDTO) { var team = new Team { Name = teamDTO.Name }; team.Id = Repository.Insert(team); teamDTO.Id = team.Id; return Ok(teamDTO); }
步骤2:验证并修正BaseUri配置
- 打开API项目属性→调试,查看"应用URL"(示例:
https://localhost:44356) - 在Web应用配置文件(如appsettings.json)中,确保
_baseUri与上述地址完全一致,示例:{ "ApiSettings": { "BaseUri": "https://localhost:44356" } }
步骤3:确认API端点可用性
- 启动API后,用Postman直接发送Post请求到
https://localhost:<你的API端口>/teams,验证接口是否正常响应 - 确保API未被防火墙或杀毒软件拦截,IIS Express正常监听指定端口
步骤4:检查IIS Express端口占用
如果API启动后端口与预期不符,右键API项目→属性→调试,修改"应用URL"的端口,并同步更新Web应用的BaseUri配置
内容的提问来源于stack exchange,提问作者wayne.blackmon
相关产品推荐
相关产品推荐

