从私有 nuget 服务器下载包时,端口号被忽略

The port number is being ignored when downloading package from private nuget server

我正在托管一个使用 Nuget.Server 包构建的私有 Nuget 服务器。

机器正在暴露端口 8082。nuget 服务器可以通过网络浏览器在 http://domain:8082/nuget 上使用,发布工作正常。

现在我正在尝试启用 VS2017 以使用来自此 nuget 服务器的包。添加新包源“http://mydomain:8082/nuget”后,我可以浏览我的包,但 Install-Package 失败。显然它在构建下载时忽略了端口号 link.

这是输出:

PM> Install-Package MyPackage
Restoring packages for D:\someproject.csproj...
  GET https://www.nuget.org/api/v2/FindPackagesById()?id='Newtonsoft.Json'&semVerLevel=2.0.0
  GET https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='Newtonsoft.Json'&semVerLevel=2.0.0
  GET http://mydomain:8082/nuget/FindPackagesById()?id='Newtonsoft.Json'&semVerLevel=2.0.0
  GET https://www.nuget.org/api/v2/FindPackagesById()?id='MyPackage'&semVerLevel=2.0.0
  GET https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='MyPackage'&semVerLevel=2.0.0
  GET http://mydomain:8082/nuget/FindPackagesById()?id='MyPackage'&semVerLevel=2.0.0
  OK http://mydomain:8082/nuget/FindPackagesById()?id='Newtonsoft.Json'&semVerLevel=2.0.0 44 мс
  OK http://mydomain:8082/nuget/FindPackagesById()?id='MyPackage'&semVerLevel=2.0.0 62 мс
  GET http://mydomain/nuget/Packages(Id='MyPackage',Version='1.0.1')/Download
  OK https://www.nuget.org/api/v2/FindPackagesById()?id='Newtonsoft.Json'&semVerLevel=2.0.0 431 мс
  OK https://www.nuget.org/api/v2/FindPackagesById()?id='MyPackage'&semVerLevel=2.0.0 441 мс
  OK https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='MyPackage'&semVerLevel=2.0.0 1436 мс
  OK https://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById()?id='Newtonsoft.Json'&semVerLevel=2.0.0 1471 мс
Unable to download package "MyPackage.1.0.1" из "http://mydomain/nuget/Packages(Id='MyPackage',Version='1.0.1')/Download".
Error while sending request.
  Unable to connect to remote server
  A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond <mydomain's IP here>:80

有没有办法解决这个问题?

问题是由网络基础设施设置引起的。 8082 端口转发到 80 端口,Nuget 服务器监听 80 端口。由于 url 被重写,Nuget 服务器无法知道正确的端口号,所以它响应没有自定义端口号的下载链接。

一旦我在没有实际更改端口号的情况下创建了一个端口转发,即将 8083 更改为 8083 并将 Nuget 服务器设置为侦听 8083,一切正常。

再补充一点,取消注释项目或 IIS 的 Web.config 中的元素 <add key="aspnet:UseHostHeaderForRequestUrl" value="true" />。如果您在防火墙后面或者您的 NugetServer 在不同的端口上运行,这将很有用。对我来说,这很管用。