在企业代理或防火墙后面使用 Visual Studio 时,可能会遇到影响需要网络访问的功能的连接问题,例如 NuGet 包还原、扩展安装和 AI 支持的功能。 代理问题通常分为两类:
- 配置问题:代理服务器设置、证书或网络配置出现问题。 这些问题由 IT 管理员解决。
所需的设置:Visual Studio 需要有关网络配置的其他信息。 可以直接在 IDE 中配置代理设置。 有关设置说明 ,请参阅 Visual Studio 中的“配置代理设置 ”。
注释
代理配置功能在所有 Visual Studio 2026 安装中尚未可用。 如果在安装中未看到此功能,可以安装 Visual Studio Insiders 版以进行尝试。 或者,查看 此页面的 Visual Studio 2022 版本 以获取指导。
- 所需的设置:Visual Studio 需要有关网络配置的其他信息。 有关如何向 Visual Studio 提供所需设置的详细信息,请参阅本文。
- 产品问题:如果你已确定问题不是配置问题或提供的设置未解决你看到的问题,则这可能是产品问题。 在提交工单之前,请按照收集诊断信息中的步骤进行操作。
本文可帮助你确定问题属于哪个类别,并为常见问题提供解决方案。
先决条件
在排查代理问题之前,请确保您已经完成以下步骤:
- Visual Studio 已安装并更新到最新版本。
- 允许通过防火墙的必要 URL。 请参阅 在防火墙或代理服务器后面安装和使用 Visual Studio。
已知问题和解决方案
以下部分介绍常见的代理相关问题及其解决方案。
SSL 连接错误(证书颁发机构不受信任)
症状:您会看到类似System.Net.Http.HttpRequestException: The SSL connection could not be established的错误,并带有内部异常IOException: Unable to read data from the transport connection: An existing connection was forcibly closed by the remote host。
类别:配置问题
解决方案:您的代理服务器使用的证书颁发机构(CA)必须被安装并信任。 完成以下两个步骤:
- 在 Windows 受信任的根证书颁发机构 存储中安装所有代理签发的证书(包括根和中间证书)。 有关详细信息,请参阅 受信任的根证书颁发机构证书存储。
- 将
NODE_EXTRA_CA_CERTS环境变量设置为 CA 证书文件的路径。 使用 Node.js 进程的功能需要此步骤。
注释
如果防火墙阻止连接而不是代理问题,也可能发生此错误。
透明代理失败
症状:使用透明代理时网络调用失败,出现各种错误消息。
类别:配置问题
解决方案:透明代理可能会导致各种问题,因为它们截获流量而不进行显式配置。 代理服务器可能会对特定进程和应用程序使用允许列表或阻止列表。 请与网络管理员合作:
- 验证是否允许 Visual Studio 进程通过代理
- 检查是否阻止了特定端点
- 查看 SSL 检查设置
Copilot 身份验证正常运行,而 Copilot 聊天不工作
症状:你可以登录到 GitHub,Copilot 指示你已经过身份验证,但使用 Copilot 聊天会导致错误。
类别:配置问题
解决方案:这些症状意味着 Visual Studio 自己的 .NET 请求失败,但 .NET Framework 请求正常工作。 有许多可能的原因,包括代理阻止特定网络终端,或者常规 IPv6 流量被阻止。 检查代理或防火墙是否未阻止 IPv6 流量。 请尝试以下解决方案之一:
- 首选:将代理配置为允许 IPv6 流量。
-
替代方法:将环境变量
DOTNET_SYSTEM_NET_DISABLEIPV6设置为1强制 IPv4。 -
如果使用进程允许列表:将
DevHub.exe添加到防火墙或代理的允许列表中。
- 首选:将代理配置为允许 IPv6 流量。
-
替代方法:将环境变量
DOTNET_SYSTEM_NET_DISABLEIPV6设置为1强制 IPv4。 -
如果使用进程允许列表:将
ServiceHub.Host.dotnet.x64.exe添加到防火墙或代理的允许列表中。
部分证书链错误
症状:堆栈跟踪显示 The remote certificate is invalid because of errors in the certificate chain: PartialChain。
类别:配置问题
解决方案:证书链中缺少一个或多个中间证书。 有关识别缺失证书的步骤,请参阅 “诊断部分证书链问题 ”,然后与 IT 管理员一起安装它们。
需要代理身份验证(基本身份验证出现 407 错误)
症状:使用带有基本身份验证的代理时,堆栈跟踪显示 (407) Proxy Authentication Required。
类别:所需的设置
解决方案:Visual Studio 支持使用基本身份验证登录到 GitHub 和在身份验证代理后面使用 Microsoft Entra 帐户,但大多数版本的 Visual Studio 不支持在使用基本身份验证的身份验证代理后面使用 Copilot。
启动时,将显示一个提示来捕获凭据。 凭据将存储在凭据管理器中的Windows 凭据下,作为互联网或网络地址,然后是代理要求的用户名和密码。
启动时,将出现一个提示来请求输入凭据。 凭据将存储在凭据管理器中的Windows 凭据下,作为互联网或网络地址,然后是代理要求的用户名和密码。
还可以直接在 Visual Studio 中配置代理凭据。 请参阅 Visual Studio 中的“配置代理设置”。
需要代理身份验证(NTLM 或 Kerberos)
症状:将代理服务器与 NTLM 或 Kerberos 身份验证配合使用时,依赖于网络的功能不起作用。
类别:所需的设置
解决方案:将 Visual Studio 配置为使用默认代理凭据:
- 转到 “工具>选项>代理设置”。
- 选择 “使用登录的 Windows 帐户 ”以使用当前的 Windows 凭据。
- 重启 Visual Studio,使更改生效。
有关详细信息,请参阅 在 Visual Studio 中配置代理设置。
将 VS_USE_DEFAULTPROXY 环境变量设置为 true。 对于 Copilot,将 COPILOT_USE_DEFAULTPROXY 设置为 true。
注释
若要稍后禁用此解决方法,请完全删除环境变量。 将false设置为不禁用该功能。
需要显式代理配置
症状:即使代理不需要身份验证,依赖于网络的功能也不起作用。
类别:所需的设置
解决方案:显式配置代理服务器地址:
- 转到 “工具>选项>代理设置”。
- 选择 “使用自定义代理设置”。
- 输入代理服务器 URL 和端口。
- 重启 Visual Studio,使更改生效。
有关详细信息,请参阅 在 Visual Studio 中配置代理设置。
将 HTTPS_PROXY 和 HTTP_PROXY 环境变量设置为您的代理服务器地址。 Copilot 需要为 Visual Studio 设置这些设置。
有关详细的代理配置步骤,请参阅 Visual Studio 中的“配置代理设置”。
排查 SSL 证书问题
当代理服务器执行 SSL 检查并且未正确安装或信任所需的证书时,通常会发生 SSL 证书错误。 使用以下步骤诊断根本原因。
回答诊断问题
请通过这些问题缩小问题范围:
- 证书是否受信任? 检查代理的 CA 证书是否已安装在当前用户的证书存储或本地计算机存储中。
- Visual Studio 是否以其他用户身份运行? 如果 Visual Studio 是以不同于登录 Windows 的用户身份运行,可能无法访问当前用户存储中的证书。
- 您是否已被认证使用在线服务? 检查是否可以在 Visual Studio 中登录到Microsoft或 GitHub 帐户。
- 该功能以前是否正常工作? 如果该功能之前正常工作,但后来停止工作,则可能是上游网络配置发生了更改。 这不是 Visual Studio 产品问题。
- 是否可以访问其他网络资源? 如果可以浏览 Web 但 Visual Studio 功能失败,则问题专门与 Visual Studio 的网络连接有关。
根据症状确定问题
使用这些模式来识别你的特定问题:
- 用户存储中的证书,VS 以不同用户身份运行:Visual Studio 可能无法访问证书。 请改为在本地计算机存储中安装证书。
- 某些功能工作但其他功能失败:这通常表示 IPv6 问题或 .NET Framework 与 .NET Core 网络之间的差异。 请参阅 Copilot 身份验证的工作原理,而 Copilot 聊天则不起作用。
- 昨天工作,今天中断:发生了上游网络配置更改。 请与 IT 管理员联系,确定更改的内容。
诊断部分证书链问题
如果看到 PartialChain 错误,请使用以下步骤确定缺少的证书。 这些步骤需要 OpenSSL 命令行工具。
运行以下命令以查看证书链,将
PROXY_HOST:PORT替换为您的代理地址,将target.host.com替换为您要访问的端点:openssl s_client -proxy PROXY_HOST:PORT -connect target.host.com:443 -showcerts -verify 5 </dev/null对于输出中的每个证书,运行以下命令来检查链(将每个证书保存到文件后,如下所示
cert1.pemcert2.pem):openssl x509 -in cert1.pem -noout -subject -issuer -ski -aki通过检查来验证证书链:
- 证书 N 的 颁发机构密钥标识符(AKI) 应与证书 N+1 的 使用者密钥标识符(SKI) 匹配。
- 证书 N 的 颁发者 DN 应与证书 N+1 的 使用者 DN 匹配。
如果在链中发现中断,请联系 IT 管理员获取并安装缺少的中间证书。
注释
如果一个证书的 AKI 与链中下一个证书的 SKI 不匹配,即使 Web 浏览器成功,.NET 也会拒绝请求。 这是比大多数浏览器执行的更严格的验证。
产品问题:收集诊断信息以获取支持
如果在 Visual Studio 中提供了所需的设置后确定问题不是配置问题,请提交反馈票证。 请参阅 如何报告 Visual Studio 的问题。 在提交代理问题的反馈票证时,请提供以下信息来帮助我们进行调查。 提供的详细信息越多,我们可以更快地确定问题是产品 bug 还是配置问题。
检查身份验证状态
验证以下身份验证状态:
GitHub 身份验证:
- 打开 Windows>凭据管理器>Windows 凭据。
- 查找带有
git:前缀的凭据。 - 检查
%LocalAppData%/.IdentityService/GitHubV3AccountStore.json的 GitHub 帐户元数据。
功能状态:请注意哪些功能正常工作,哪些功能失败(例如 NuGet 还原、扩展安装、AI 功能)。
收集日志和配置详细信息
收集以下信息:
Visual Studio 日志:创建 zip
%temp%/Vslogs文件。网络跟踪:如果可能,请收集 Fiddler 跟踪,以显示失败请求。
代理配置详细信息:
- 这是显式代理还是透明代理?
- 代理是否需要身份验证? 如果是,哪种类型(基本,NTLM,Kerberos)?
- 代理是否阻止或允许特定应用程序?
- 是否安装并信任所需的证书? 是否有任何证书被吊销或过期?
- 是否还配置了防火墙?
- 是否启用了 SSL 检查?
- 是否通过代理路由 IPv6 流量?
与其他工具的比较:Visual Studio Code 或其他应用程序是否通过此代理工作?