这个错误是新版 NuGet 客户端(6.12+ / .NET 9 SDK)默认强制 HTTPS 导致的,内网 HTTP 源需要在 NuGet.Config 里显式声明允许。有三种配置位置,任选一种:
方法一:命令行直接改(推荐,最快)
在你当前机器上执行一次:
dotnet nuget add source http://192.168.1.1:8624/nuget/InternalNuget/v3/index.json -n ProGet --allow-insecure-connections
如果之前已经加过这个源,改用 update:
dotnet nuget update source ProGet --allow-insecure-connections
执行完后重新 push 就不会再报错了。
方法二:手动编辑配置文件
NuGet.Config 有三个层级,放在哪里取决于作用范围:
机器级(对当前用户所有项目生效,最常用):
C:\Users\你的用户名\AppData\Roaming\NuGet\NuGet.Config
打开这个文件(没有就新建),内容改成:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<packageSources>
<add key="ProGet"
value="http://192.168.1.1:8624/nuget/InternalNuget/v3/index.json"
allowInsecureConnections="true" />
<add key="nuget.org"
value="https://api.nuget.org/v3/index.json" />
</packageSources>
</configuration>
关键就是源标签上那个 allowInsecureConnections="true" 属性。
项目级(只对某个解决方案生效,团队共享用):
在解决方案根目录(和 .sln 同级)放一个 NuGet.config,内容同上。这样团队成员拉代码后不用再各自配,适合团队场景。
配置层级关系:项目级会合并并覆盖机器级的同名配置。
方法三:push 命令直接带参数(临时用)
如果你用的是较新的 .NET SDK(9.0.200+),push 命令本身就支持这个开关:
dotnet nuget push MyCompany.MyTool.1.0.0.nupkg \
--source http://192.168.1.1:8624/nuget/InternalNuget/v3/index.json \
--api-key 你的密钥 \
--allow-insecure-connections
不用改任何配置文件,但每次 push 都要带,适合一次性操作。
建议
- 个人开发机:用方法一,一次配置永久生效。
- 团队多人使用:把带
allowInsecureConnections的NuGet.config提交到 Git 仓库根目录,所有人开箱即用。 - 长期方案:以后有条件可以在 Nginx 前面加个自签名或内网 CA 的 HTTPS 证书,就不用每个客户端都配这个了——但内网场景 HTTP 完全够用,不必折腾。
配完再跑一次 push 命令就能上去了。