Visual Studio 2015 中的包管理器“407(需要代理身份验证)”
Package manager in Visual Studio 2015 "407 (Proxy Authentication Required)"
我知道这是一个经常被问到的问题,但是经过几天的研究我还没有找到这个特定问题的答案。
我有一个新的 ASP.NET 5 (Core 1.0) MVC 模板,我正在尝试向其中添加一个包,但是每次我进入包管理器输出时:
Response status code does not indicate success: 407 (Proxy Authentication Required).
以及解决方案资源管理器顶部的以下内容:
我的设置看起来不错,我可以在 'Manage Packages for Solution' 屏幕中浏览包。
我知道我被要求提供凭证,那么我应该在哪里输入它们?另一方面,我机器上的所有其他应用程序都已验证互联网访问权限,那我为什么要这样做?
非常欢迎任何想法/指点。
Visual Studio 2015 - 14.0.24720.00 更新 1
Visual Studio2015-3.3.0.167
的 NuGet 包管理器
包管理器输出的顶部部分:
正在安装 NuGet 包 AutoMapper.4.2.1.
已成功将 'AutoMapper 4.2.1' 安装到 CustomerPortal
==========完成==========
PATH=.\node_modules.bin;%PATH%;C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\Extensions\Microsoft\Web Tools\External;C:\Program Files (x86) \微软Visual Studio14.0\Common7\IDE\Extensions\Microsoft\WebTools\External\git
C:\Users\medmondson.dnx\runtimes\dnx-clr-win-x86.1.0.0-rc1-update1\bin\dnx.exe "C:\Users\medmondson.dnx\runtimes\dnx-clr-win-x86.1.0.0-rc1-update1\bin\lib\Microsoft.Dnx.Tooling\Microsoft.Dnx.Tooling.dll" 恢复 "M:\visual studio 2015\Projects\CustomerPortal\src\CustomerPortal" -f "C:\Program Files (x86)\Microsoft Web Tools\DNU"
Microsoft .NET 开发实用程序 Clr-x86-1.0.0-rc1-16231
获取 https://www.nuget.org/api/v2/
获取 http://packages.nuget.org/v1/FeedService.svc/
获取 https://www.postsharp.net/nuget/packages/
恢复 M:\visual studio 2015\Projects\CustomerPortal\src\CustomerPortal\project.json
的包
获取 https://www.nuget.org/api/v2/FindPackagesById()?id='AutoMapper'
获取 http://packages.nuget.org/v1/FeedService.svc/FindPackagesById()?id='AutoMapper'
获取 https://www.postsharp.net/nuget/packages/FindPackagesById()?id='AutoMapper'
警告:FindPackagesById:AutoMapper
发送请求时出错。
获取 https://www.nuget.org/api/v2/FindPackagesById()?id='AutoMapper'
获取 https://www.nuget.org/api/v2/FindPackagesById()?id='System.Collections.Immutable'
获取 http://packages.nuget.org/v1/FeedService.svc/FindPackagesById()?id='System.Collections.Immutable'
获取 https://www.postsharp.net/nuget/packages/FindPackagesById()?id='System.Collections.Immutable'
警告:FindPackagesById:AutoMapper
发送请求时出错。
获取 https://www.postsharp.net/nuget/packages/FindPackagesById()?id='AutoMapper'
警告:FindPackagesById:AutoMapper
响应状态代码不表示成功:407(需要代理身份验证)。
更新
我已经成功捕获了一个 non-working 请求(返回 407)和一个工作请求 唯一的区别是 Proxy-Authorization header 的内容 哪个更长。这表明代理身份验证确实存在,但它使用的是不同的协议。
几周前我遇到了同样的问题。对我来说,在 machine.config (Windows/Microsoft.NET/Framework64/v4.0.30319/Config)
中加入以下内容很有帮助
<system.net>
<settings>
<ipv6 enabled="True"/>
</settings>
<defaultProxy useDefaultCredentials="True" enabled="True">
<proxy proxyaddress="http://your.proxyserver.ip:port"/>
</defaultProxy>
</system.net>
我必须修改 32 位 machine.config(假设 VS 在 32 位运行)以添加 <system.net>
部分但省略任何内容<defaultProxy>
标签:
<system.net>
<defaultProxy useDefaultCredentials="True" enabled="True" />
</system.net>
根据MSDN:
If the defaultProxy element is empty, the proxy settings from Internet Explorer will be used.
这对我来说是完美的,因为我机器上的所有其他应用程序都可以正常工作——包括 IE。
manchine.config 位置 (Win 7): %SYSTEMROOT%\Microsoft.NET\Framework\v4.0.30319\Config\machine.config
备注
感谢@user3063127 为我指明了正确的方向(您投了赞成票),我解决了这个问题。据我所知,这只会影响 DNX 项目的包恢复,并且可能会在 RC2 发布时得到修复。
如果你安装了Fiddler,勾选规则选项下的选项'Automatically Authenticate',应该可以解决上述问题。
Selecting the Automatically Authenticate
从以下 post 获得此信息
Configuring Fiddler to use company network's proxy?
更新到最新 nuget.exe 第一
nuget update self
在配置文件中添加了代理详细信息:
nuget config -Set http_proxy=http://username:password@proxyserver.company.com:port
如果您不知道代理服务器的详细信息,可以使用其他解决方法来解决此错误“407(需要代理授权。)”
解决方法:
1. Download/Install 提琴手
2. 点击菜单规则 -> 自动验证
不关闭Fiddler,现在尝试在Visual Studio中恢复包。它现在应该可以在没有任何代理错误的情况下恢复包。
这不是一个完美的解决方案,但仍然是解决此问题的替代解决方法。此解决方案尝试使用 Fiddler 作为代理。
您需要修改文件 2.config 文件:
对于 Visual Studio 2015
C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\vsn.exe.config
C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\devenv.exe.config
2017 年 Visual Studio
C:\Program Files (x86)\Microsoft Visual Studio17\Community\Common7\IDE\vsn.exe.config
C:\Program Files (x86)\Microsoft Visual Studio17\Community\Common7\IDE\devenv.exe.config
<system.net>
<defaultProxy enabled="true" useDefaultCredentials="true">
<proxy usesystemdefault="True" bypassonlocal="True" proxyaddress="http://yourproxy:proxyport" />
<bypasslist>
<add address="(.*\.)?anyotherdomain\.com?(.*)" />
<add address="(.*\.)?nuget\.org?(.*)" />
<add address="192\.168\.\d{1,3}\.\d{1,3}" />
</bypasslist>
</defaultProxy>
<settings>
<ipv6 enabled="false"/>
<servicePointManager expect100Continue="false"/>
</settings>
</system.net>
如果没有代理,您仍然可以从 DNS 服务器获取它的 IP,并且没有其他东西阻止它,nuget.org
的绕过将起作用。
也需要这个来安装nuget
打开文件 C:\Users\[YOUR_USER_NAME]\AppData\Roaming\NuGet\NuGet.Config
并在 <configuration> <\configuration>
标签内添加以下内容:
<config>
<add key="http_proxy" value="http://yourproxy:proxyport" />
</config>
可能您在凭据管理器中的代理凭据有误。尝试删除它。
控制面板 -> 用户帐户 -> 凭据管理器。
删除代理凭据解决了我的问题。
添加代理用户名、密码解决了我的 407 身份验证问题。
将以下代码片段放入位于 C:\Users\myUserName\AppData\Roaming
的 NuGet.config 文件中
<configuration>
<config>
<add key="http_proxy" value="http://my.proxy.address:port" />
<add key="http_proxy.user" value="mydomain\myUserName" />
<add key="http_proxy.password" value="[base64 encoded Password]" />
</config>
</configuration>
参考:https://forums.asp.net/t/2096179.aspx?Proxy+407+Access+Denied
我知道这是一个经常被问到的问题,但是经过几天的研究我还没有找到这个特定问题的答案。
我有一个新的 ASP.NET 5 (Core 1.0) MVC 模板,我正在尝试向其中添加一个包,但是每次我进入包管理器输出时:
Response status code does not indicate success: 407 (Proxy Authentication Required).
以及解决方案资源管理器顶部的以下内容:
我的设置看起来不错,我可以在 'Manage Packages for Solution' 屏幕中浏览包。
我知道我被要求提供凭证,那么我应该在哪里输入它们?另一方面,我机器上的所有其他应用程序都已验证互联网访问权限,那我为什么要这样做?
非常欢迎任何想法/指点。
Visual Studio 2015 - 14.0.24720.00 更新 1
Visual Studio2015-3.3.0.167
包管理器输出的顶部部分:
正在安装 NuGet 包 AutoMapper.4.2.1.
已成功将 'AutoMapper 4.2.1' 安装到 CustomerPortal
==========完成==========
PATH=.\node_modules.bin;%PATH%;C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\Extensions\Microsoft\Web Tools\External;C:\Program Files (x86) \微软Visual Studio14.0\Common7\IDE\Extensions\Microsoft\WebTools\External\git
C:\Users\medmondson.dnx\runtimes\dnx-clr-win-x86.1.0.0-rc1-update1\bin\dnx.exe "C:\Users\medmondson.dnx\runtimes\dnx-clr-win-x86.1.0.0-rc1-update1\bin\lib\Microsoft.Dnx.Tooling\Microsoft.Dnx.Tooling.dll" 恢复 "M:\visual studio 2015\Projects\CustomerPortal\src\CustomerPortal" -f "C:\Program Files (x86)\Microsoft Web Tools\DNU"
Microsoft .NET 开发实用程序 Clr-x86-1.0.0-rc1-16231
获取 https://www.nuget.org/api/v2/
获取 http://packages.nuget.org/v1/FeedService.svc/
获取 https://www.postsharp.net/nuget/packages/
恢复 M:\visual studio 2015\Projects\CustomerPortal\src\CustomerPortal\project.json
的包
获取 https://www.nuget.org/api/v2/FindPackagesById()?id='AutoMapper'
获取 http://packages.nuget.org/v1/FeedService.svc/FindPackagesById()?id='AutoMapper'
获取 https://www.postsharp.net/nuget/packages/FindPackagesById()?id='AutoMapper'
警告:FindPackagesById:AutoMapper
发送请求时出错。
获取 https://www.nuget.org/api/v2/FindPackagesById()?id='AutoMapper'
获取 https://www.nuget.org/api/v2/FindPackagesById()?id='System.Collections.Immutable'
获取 http://packages.nuget.org/v1/FeedService.svc/FindPackagesById()?id='System.Collections.Immutable'
获取 https://www.postsharp.net/nuget/packages/FindPackagesById()?id='System.Collections.Immutable'
警告:FindPackagesById:AutoMapper
发送请求时出错。
获取 https://www.postsharp.net/nuget/packages/FindPackagesById()?id='AutoMapper'
警告:FindPackagesById:AutoMapper
响应状态代码不表示成功:407(需要代理身份验证)。
更新
我已经成功捕获了一个 non-working 请求(返回 407)和一个工作请求 唯一的区别是 Proxy-Authorization header 的内容 哪个更长。这表明代理身份验证确实存在,但它使用的是不同的协议。
几周前我遇到了同样的问题。对我来说,在 machine.config (Windows/Microsoft.NET/Framework64/v4.0.30319/Config)
中加入以下内容很有帮助<system.net>
<settings>
<ipv6 enabled="True"/>
</settings>
<defaultProxy useDefaultCredentials="True" enabled="True">
<proxy proxyaddress="http://your.proxyserver.ip:port"/>
</defaultProxy>
</system.net>
我必须修改 32 位 machine.config(假设 VS 在 32 位运行)以添加 <system.net>
部分但省略任何内容<defaultProxy>
标签:
<system.net>
<defaultProxy useDefaultCredentials="True" enabled="True" />
</system.net>
根据MSDN:
If the defaultProxy element is empty, the proxy settings from Internet Explorer will be used.
这对我来说是完美的,因为我机器上的所有其他应用程序都可以正常工作——包括 IE。
manchine.config 位置 (Win 7): %SYSTEMROOT%\Microsoft.NET\Framework\v4.0.30319\Config\machine.config
备注
感谢@user3063127 为我指明了正确的方向(您投了赞成票),我解决了这个问题。据我所知,这只会影响 DNX 项目的包恢复,并且可能会在 RC2 发布时得到修复。
如果你安装了Fiddler,勾选规则选项下的选项'Automatically Authenticate',应该可以解决上述问题。
Selecting the Automatically Authenticate
从以下 post 获得此信息
Configuring Fiddler to use company network's proxy?
更新到最新 nuget.exe 第一
nuget update self
在配置文件中添加了代理详细信息:
nuget config -Set http_proxy=http://username:password@proxyserver.company.com:port
如果您不知道代理服务器的详细信息,可以使用其他解决方法来解决此错误“407(需要代理授权。)”
解决方法: 1. Download/Install 提琴手 2. 点击菜单规则 -> 自动验证
不关闭Fiddler,现在尝试在Visual Studio中恢复包。它现在应该可以在没有任何代理错误的情况下恢复包。
这不是一个完美的解决方案,但仍然是解决此问题的替代解决方法。此解决方案尝试使用 Fiddler 作为代理。
您需要修改文件 2.config 文件:
对于 Visual Studio 2015
C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\vsn.exe.config
C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\devenv.exe.config
2017 年 Visual Studio
C:\Program Files (x86)\Microsoft Visual Studio17\Community\Common7\IDE\vsn.exe.config
C:\Program Files (x86)\Microsoft Visual Studio17\Community\Common7\IDE\devenv.exe.config
<system.net>
<defaultProxy enabled="true" useDefaultCredentials="true">
<proxy usesystemdefault="True" bypassonlocal="True" proxyaddress="http://yourproxy:proxyport" />
<bypasslist>
<add address="(.*\.)?anyotherdomain\.com?(.*)" />
<add address="(.*\.)?nuget\.org?(.*)" />
<add address="192\.168\.\d{1,3}\.\d{1,3}" />
</bypasslist>
</defaultProxy>
<settings>
<ipv6 enabled="false"/>
<servicePointManager expect100Continue="false"/>
</settings>
</system.net>
如果没有代理,您仍然可以从 DNS 服务器获取它的 IP,并且没有其他东西阻止它,nuget.org
的绕过将起作用。
也需要这个来安装nuget
打开文件 C:\Users\[YOUR_USER_NAME]\AppData\Roaming\NuGet\NuGet.Config
并在 <configuration> <\configuration>
标签内添加以下内容:
<config>
<add key="http_proxy" value="http://yourproxy:proxyport" />
</config>
可能您在凭据管理器中的代理凭据有误。尝试删除它。
控制面板 -> 用户帐户 -> 凭据管理器。
删除代理凭据解决了我的问题。
添加代理用户名、密码解决了我的 407 身份验证问题。
将以下代码片段放入位于 C:\Users\myUserName\AppData\Roaming
的 NuGet.config 文件中<configuration>
<config>
<add key="http_proxy" value="http://my.proxy.address:port" />
<add key="http_proxy.user" value="mydomain\myUserName" />
<add key="http_proxy.password" value="[base64 encoded Password]" />
</config>
</configuration>
参考:https://forums.asp.net/t/2096179.aspx?Proxy+407+Access+Denied