1

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

这台机器暴露了 8082 端口。 nuget 服务器可通过 web 浏览器访问http://domain:8082/nuget,发布工作正常。

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

这是输出:

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

有没有办法解决这种行为?

4

2 回答 2

1

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

一旦我创建了一个端口转发而不实际更改端口号,即 8083 到 8083 并将 Nuget 服务器设置为侦听 8083,一切正常。

于 2018-10-02T11:26:07.553 回答
1

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

于 2021-03-13T21:32:22.277 回答