同一个Visual Studio解决方案内两个.NET Core API如何互相发起请求
错误根因先说明
你遇到的No connection could be made because the target machine actively refused it报错和CORS、防火墙都没有关系,核心原因是你切换启动项目后,监听5001端口的.NET Core API项目并没有在运行,5001端口没有任何服务监听,连接自然被拒绝。
问题1:具体该如何添加对应防火墙规则?
本地localhost环回地址的通信默认不会被Windows防火墙拦截,你当前的本地调试场景完全不需要额外添加防火墙规则。
如果后续需要把该API暴露给同局域网的其他设备访问,可以按如下步骤添加入站规则:
- 打开「Windows Defender防火墙」→ 选择左侧「高级设置」
- 点击左侧「入站规则」→ 右侧点击「新建规则」
- 规则类型选择「端口」,点击下一步
- 协议选择「TCP」,勾选「特定本地端口」,输入
5001,点击下一步 - 选择「允许连接」,点击下一步
- 按需勾选适用网络(仅本地调试用的话只勾选「专用」即可),点击下一步
- 给规则命名(比如
.NET Core API 5001端口放行),点击完成即可
问题2:添加规则后能否解决该问题?
不能。你当前的报错是目标API服务未启动导致的,和防火墙拦截没有关联,添加防火墙规则对解决当前问题没有任何帮助。
问题3:是否需要两个项目同时在Visual Studio中运行才能实现跨API调用?
是的。你调用5001端口的API接口的前提,是这个API服务必须处于运行状态、对应端口正常监听。
你可以在Visual Studio中配置多项目同时启动,不用来回切换启动项:
- 右键你的解决方案 → 选择「属性」
- 找到「通用属性」→「启动项目」
- 选择「多个启动项目」,把两个项目的「操作」都修改为「启动」,可以把API项目调整到前面优先启动
- 保存配置后再启动,两个项目就会同时运行
额外补充
你配置的CORS策略在当前场景完全不会生效:CORS是浏览器的安全策略,只有浏览器端发起跨域请求时才会校验,你现在是后端服务之间的直接调用,不会触发CORS校验,哪怕不配置CORS也不会影响调用。
内容的提问来源于stack exchange,提问作者jamheadart
相关产品推荐
相关产品推荐

