Visual studio 2015 Visual studio nuget未使用HTTPS配置的源,而是使用HTTP

Visual studio 2015 Visual studio nuget未使用HTTPS配置的源,而是使用HTTP,visual-studio-2015,nuget,nuget-package,nuget-server,Visual Studio 2015,Nuget,Nuget Package,Nuget Server,我已经在https url上创建了nuget teamcity提要: 当我在visual studio中推送到此url或列表包时,它可以工作,但当我从包管理控制台或visual studio中的visual nuget包管理工具安装包时,我看到它尝试从http提要下载,但这不起作用,并给出一个超时,因为teamcity仅在https端口上打开并允许 Retrieving package 'Test 1.0.0' from 'SAI'. GET http://teamcity:xyz

我已经在https url上创建了nuget teamcity提要:

当我在visual studio中推送到此url或列表包时,它可以工作,但当我从包管理控制台或visual studio中的visual nuget包管理工具安装包时,我看到它尝试从http提要下载,但这不起作用,并给出一个超时,因为teamcity仅在https端口上打开并允许

Retrieving package 'Test 1.0.0' from 'SAI'.
  GET     http://teamcity:xyz/httpAuth/app/nuget/v1/FeedService.svc/download/Package/4646:i    d/Test.1.0.0.0.nupkg

I receive a timeout :
Retrieving package 'Test 1.0.0' from 'TEST'.
 GET       http://teamcity:xyz/httpAuth/app/nuget/v1/FeedService.svc/download/Test/4646:id/T    est.1.0.0.0.nupkg
.... 
...
has timed out after 100000ms.
那么,为什么VisualStudio使用http呢?当我查看nuget配置文件时,我可以看到提要url是用HTTPS配置的

<packageSources>
 <add key="nuget.org" value="https://api.nuget.org/v3/index.json" protocolVersion="3" />
 <add key="nuget.org" value="https://www.nuget.org/api/v2/" />
 <add key="TEST" value="https://teamcity:xyz/httpAuth/app/nuget/v1/FeedService.svc/" />
</packageSources>

为什么VisualStudio使用http?当我查看nuget配置文件时,我可以看到提要url是用HTTPS配置的

<packageSources>
 <add key="nuget.org" value="https://api.nuget.org/v3/index.json" protocolVersion="3" />
 <add key="nuget.org" value="https://www.nuget.org/api/v2/" />
 <add key="TEST" value="https://teamcity:xyz/httpAuth/app/nuget/v1/FeedService.svc/" />
</packageSources>
这是因为TeamCity服务器返回一个用于下载的http url,而nuget.exe/visualstudio扩展只跟随该链接。在本例中,VisualStudio/nuget没有使用HTTPS配置的提要,而是使用HTTP

此外,NuGet服务器(NuGet.org)和teamcity只允许在https端口上使用,因此所有提要链接和身份验证都会出错,因为http://不正确,将被重定向到https://。这也意味着不会重新发送auth头,因此会导致重定向循环。然后我们将获得超时问题

要解决此问题,您可以尝试修改//conf/server.xml部分,以包含最后3个属性,使其在SSL终止代理后正常运行:

<Connector port="8080" protocol="org.apache.coyote.http11.Http11NioProtocol"
       connectionTimeout="60000"
       redirectPort="8543"
       useBodyEncodingForURI="true"
       socket.txBufSize="64000"
       socket.rxBufSize="64000"
       tcpNoDelay="1"
       secure="true"
       scheme="https"
       proxyPort="443"

有关更多详细信息,请参阅GitHub上的