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

Python用requests调用ASP.NET Core API出现ConnectionError如何解决

问题排查及解决方案

核心原因定位

你遇到的报错核心是Connection refused(TCP连接被拒绝),属于网络层问题,和请求体、接口参数配置无关。提示里的Max retries exceeded是requests底层默认自动重试导致的,和你手动发起的单次请求无关,优先从以下维度排查:


1. 确认ASP.NET Core实际监听的协议与端口

这是最高发的问题:

  • 新版ASP.NET Core默认会同时监听http://localhost:5000和https://localhost:5001,但如果你修改过启动配置、或是用IIS/反向代理启动,可能仅开放了https端口
  • 核对Postman调用接口时用的完整地址,如果用的是https://localhost:5001/api/Search,将Python代码里的url改成对应地址即可,如果是本地自签名测试证书,还要加verify=False参数跳过证书校验:
# 修正后的请求写法
url = "https://localhost:5001/api/Search"
# 直接用json参数,无需手动序列化和设置Content-Type头
response = requests.post(url, json=request.__dict__, verify=False)

2. 排查Python运行环境差异

如果你的Python代码运行在WSL、虚拟机、Docker容器中:

  • 代码里的localhost指向的是Python运行环境的本地,而非ASP.NET Core服务所在的宿主机
  • 解决方案:将url中的localhost替换为宿主机的局域网IP,同时将ASP.NET Core的监听地址改为0.0.0.0(修改Program.cs/Startup.cs的UseUrls配置),允许非本地请求访问。

3. 可选优化项(避免后续参数错误)

你当前的请求传参写法可以简化,requests内置了json参数支持,无需手动序列化、手动设置请求头:
原代码:

headers = {'Content-type': 'application/json', 'Accept': 'application/json'}
response = requests.post(url, data=json.dumps(request.__dict__), headers=headers)

优化后:

response = requests.post(url, json=request.__dict__)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 09:54:00