NuGet đằng sau một proxy


104

Tôi phát hiện ra rằng NuGet cho phép cấu hình cài đặt proxy kể từ phiên bản 1.4. Nhưng, tôi không thể tìm thấy bất kỳ ví dụ dòng lệnh nào.

Tôi đang cố chạy một số bản dựng và NuGet không thể kết nối.

Làm cách nào để định cấu hình cài đặt proxy trên dòng lệnh?


1
Vì lợi ích của những người dùng khác gặp phải vấn đề proxy: Bạn sẽ biết nó có thể là proxy nếu NuGet hiển thị thông báo: "Cái tên từ xa không thể được giải quyết: 'nuget.org'"
pduncan

4
Hãy cẩn thận kiểm tra các biến http_proxyhttps_proxymôi trường cũng như cài đặt proxy hệ thống của bạn
Colonel Panic

Có một vấn đề cho nó hiện nay trên github: github.com/NuGet/Home/issues/458
thekip

Câu trả lời:


202

Đây là những gì tôi đã làm để điều này hoạt động với proxy công ty của tôi sử dụng xác thực NTLM. Tôi đã tải xuống NuGet.exe và sau đó chạy các lệnh sau (mà tôi tìm thấy trong các nhận xét của cuộc thảo luận này trên CodePlex):

nuget.exe config -set http_proxy=http://my.proxy.address:port
nuget.exe config -set http_proxy.user=mydomain\myUserName
nuget.exe config -set http_proxy.password=mySuperSecretPassword

Điều này đặt những thứ sau vào NuGet.configvị trí của tôi tại %appdata%\NuGet(ánh xạ tới C: \ Users \ myUserName \ AppData \ Roaming trên máy Windows 7 của tôi):

<configuration>
    <!-- stuff -->
    <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="base64encodedHopefullyEncryptedPassword" />
    </config>
    <!-- stuff -->
</configuration>

Ngẫu nhiên, điều này cũng đã khắc phục sự cố của tôi với NuGet chỉ hoạt động lần đầu tiên tôi nhấn nguồn gói trong Visual Studio.

Lưu ý rằng một số người đã thử cách tiếp cận này đã báo cáo qua các nhận xét rằng họ có thể bỏ qua thiết lập http_proxy.passwordkhóa khỏi dòng lệnh hoặc xóa nó sau khi thực tế khỏi tệp cấu hình và vẫn có thể có chức năng NuGet qua proxy.

Tuy nhiên, nếu bạn thấy rằng bạn phải chỉ định mật khẩu của mình trong tệp cấu hình NuGet, hãy nhớ rằng bạn phải cập nhật mật khẩu được lưu trữ trong cấu hình NuGet từ dòng lệnh khi bạn thay đổi thông tin đăng nhập mạng, nếu thông tin đăng nhập proxy cũng là mạng của bạn thông tin đăng nhập .


Dòng lệnh NuGet không thêm các mục vào tệp NuGet.config của tôi, nhưng khi tôi chỉnh sửa thủ công tệp, nó hoạt động rất tốt.
pduncan

19
Trong trường hợp của tôi, tôi đã bỏ qua hoàn toàn khóa http_proxy.password và dường như tôi rất vui khi chuyển qua thông tin đăng nhập AD đã xác thực của mình. Điều này giúp tiết kiệm nhu cầu thay đổi mật khẩu thường xuyên.
Sir Crispalot

5
Cảnh báo Hãy cẩn thận khi bạn sử dụng cấu hình do arcain đề xuất. Đảm bảo rằng bạn thay đổi mật khẩu trong tệp cấu hình khi bạn thay đổi mật khẩu Windows của mình. Tài khoản Windows của tôi đã bị khóa ngẫu nhiên sau khi thay đổi mật khẩu theo chính sách của công ty. Tôi mất vài giờ để tìm ra rằng mục cấu hình này gây ra toàn bộ sự cố này. Lựa chọn tốt nhất là chỉ cần loại bỏ các http_proxy.password chính theo đề nghị của @Sir Crispalot
AJ Qarshi

3
Hãy thử những gì Sir Crispalot đã đề cập và xóa khóa http_proxy.password. Điều đó đã hiệu quả với một số người và cho phép họ tránh phải thay đổi mật khẩu trong tệp cấu hình NuGet.
arcain

4
Một chiến thắng khác ở đây - sử dụng các cài đặt này và bỏ qua khóa mật khẩu đã làm việc cho tôi đằng sau proxy công ty của tôi với xác thực NTLM.
Cᴏʀʏ

22

Có lẽ bạn có thể thử điều này với devenv.exe.config của bạn

<system.net>
    <defaultProxy useDefaultCredentials="true" enabled="true">
        <proxy proxyaddress="http://proxyaddress" />
    </defaultProxy>
    <settings>
        <servicePointManager expect100Continue="false" />
        <ipv6 enabled="true"/>
    </settings>
</system.net>

Tôi tìm thấy nó từ trình theo dõi vấn đề NuGet

Ngoài ra còn có các nhận xét có giá trị khác về các vấn đề mạng NuGet +.


2
nhưng điều này giả định devenve.exe (Visual Studio đó là) được cài đặt, mà không phải ở trong một máy chủ xây dựng
Kat Lim Ruiz

Tôi đã phải xóa cài đặt này để làm cho nó hoạt động, để nó tuân theo cài đặt proxy của IE.
Rosdi Kasim 19/07/18

xml <system.net> <defaultProxy useDefaultCredentials="true" enabled="true"> </defaultProxy> <settings> <ipv6 enabled="true"/> </settings> </system.net> Làm việc cho tôi, nó đã sử dụng cài đặt proxy hệ thống. Thử nghiệm trên WINDOWS 10
Văn Thoại Nguyễn

11

Chỉ trong trường hợp bạn đang sử dụng phiên bản https của nuget ( https://www.nuget.org ), hãy lưu ý rằng bạn phải đặt các giá trị bằng https.

  • https_proxy
  • https_proxy.user
  • https_proxy.password

1
Mật khẩu https là văn bản thuần túy trong nuget.config nếu bạn làm theo hướng dẫn của arcains nhưng sử dụng https
dmce,

Điều này đã khắc phục sự cố của tôi, thêm chi tiết tại đây github.com/NuGet/Home/issues/5980 .
jpierson

Vì vậy, chúng tôi không thể sử dụng 'http' để đặt địa chỉ proxy nếu chúng tôi đang sử dụng phiên bản https của nuget?
coder kemp

8

Tôi có thể sai nhưng tôi nghĩ nó đã sử dụng cài đặt proxy của IE.

Nếu nó thấy rằng bạn cần đăng nhập, nó sẽ mở một hộp thoại và yêu cầu bạn làm như vậy (đó là đăng nhập).

Vui lòng xem mô tả về điều này tại đây -> http://docs.nuget.org/docs/release-notes/nuget-1.5


1
Nó làm - vấn đề với cách tiếp cận này nảy sinh khi chính sách nhóm của công ty của mình liên tục trở lại trạng các thiết lập trình duyệt IE của bạn cho những người thân mà không làm việc với NuGet, như xảy ra tại nơi tôi làm việc
Xcalibur

5

Đối với bất kỳ ai đang sử dụng VS2015: Tôi đã gặp phải lỗi "Yêu cầu xác thực proxy 407", lỗi này đã làm hỏng bản dựng của tôi. Sau vài giờ điều tra, hóa ra MSBuild đã không gửi thông tin đăng nhập khi cố gắng tải xuống Nuget như một phần của mục tiêu 'DownloadNuGet'. Giải pháp là thêm XML sau vào C: \ Program Files (x86) \ MSBuild \ 14.0 \ Bin \ MSBuild.exe.config bên trong <configuration>phần tử:

<system.net>
            <defaultProxy useDefaultCredentials="true">
            </defaultProxy>
</system.net>

4

Giải pháp cho tôi là bao gồm

<configuration>
  <config>
    <add key="http_proxy" value="http://<IP>:<Port>" />
    <add key="http_proxy.user" value="<user>" />
    <add key="http_proxy.password" value="<password>" />
  </config>
</configuration>

Trong nuget.configtệp.


1
Tôi có thể tìm thấy tệp này ở đâu?
Marcelo Machado

2
@MarceloMachado: Tại đây:% AppData% \ NuGet \ NuGet.config
Torben Kohlmeier

vị trí nuget.config của người dùng trên Windows 10:% ​​AppData% \ Roaming \ Nuget \ NuGet.config
Stato Machino

Bạn có thể chọn thực hiện một mình `<add key =" http_proxy "value =" http: // <IP>: <Port> "/>` mà không cần chỉ định tên người dùng và mật khẩu. Hãy nhớ khởi động lại Visual Studio sau đó!
taylorswiftfan

Khởi động lại VS là quan trọng! Ngoài ra, tôi nghĩ rằng tôi đã gặp sự cố khi chạy với tư cách Quản trị viên (cần thiết để chạy như một người dùng thông thường?)
Mars

4

Một hương vị khác cho cùng một "proxy cho nuget": hoặc bạn có thể đặt cài đặt proxy cho nuget của mình để kết nối thông qua fiddler . Dưới đây cmd sẽ lưu cài đặt proxy trong tệp cấu hình nuget mặc định cho người dùng tại%APPDATA%\NuGet\NuGet.Config

nuget config -Set HTTP_PROXY=http://127.0.0.1:8888

Bất cứ khi nào bạn cần nuget để kết nối Internet, chỉ cần mở Fiddler, bạn đã nghe fiddler trên cổng mặc định 8888.

Cấu hình này không nhạy cảm với các thay đổi công việc vì fiddler sẽ giải quyết mọi xác thực với proxy luồng lên cho bạn.


2

Có thể điều này sẽ giúp người khác. Đối với tôi, giải pháp là mở cài đặt NuGet trên Visual Studio (2015/2017) và thêm URL nguồn cấp dữ liệu mới: http://www.nuget.org/api/v2/ .

Tôi không phải thay đổi bất kỳ cài đặt liên quan đến proxy nào.


1

Chỉ là một bổ sung nhỏ ...

Nếu nó hoạt động với bạn khi chỉ cung cấp cài đặt http_proxy chứ không phải tên người dùng và mật khẩu, tôi khuyên bạn nên đặt cài đặt proxy vào tệp nuget.config cục bộ của dự án và cam kết nó với quyền kiểm soát nguồn. Bằng cách đó, tất cả các thành viên trong nhóm đều có được cài đặt giống nhau.

Tạo một. \ Nuget.config trống

   <?xml version="1.0" encoding="utf-8"?>
   <configuration>
   </configuration>

Sau đó:

   nuget config -Set http_proxy="http://myproxy.example.com:8080" -ConfigFile .\Nuget.Config

Và cuối cùng cam kết tệp Nuget.config cục bộ dự án mới của bạn.


0

Hãy thử điều này . Về cơ bản, kết nối có thể không thành công nếu hệ thống của bạn không tin cậy chứng chỉ nuget.


0

Ngoài các đề xuất từ ​​@arcain, tôi phải thêm url Mạng Phân phối Nội dung Windows Azure sau vào danh sách trắng của máy chủ proxy của chúng tôi:

.msecnd.net

0

Giải pháp trên của @arcain Plus các bước dưới đây đã giải quyết cho tôi vấn đề

  1. Việc sửa đổi "nguồn gói" trong cài đặt trình quản lý gói Nuget để chọn hộp kiểm để sử dụng cài đặt nuget.org đã giải quyết được sự cố của tôi.

  2. Tôi cũng đã thay đổi để sử dụng (nuget.org) làm lựa chọn đầu tiên của nguồn gói
    Tôi đã bỏ chọn các nguồn gói công ty của mình để đảm bảo nuget luôn được chọn từ các nguồn toàn cầu.


0

Trên Windows Server 2016 Standard, đó là những gì tôi phát triển, tôi chỉ cần mở Bảng điều khiển trình quản lý thông tin đăng nhập và xóa các cài đặt proxy đã lưu trong bộ nhớ cache cho Visual Studio không còn hợp lệ và sau đó khởi động lại Visual Studio. Lần tiếp theo tôi mở Trình quản lý gói Nuget, tôi được nhắc nhập thông tin đăng nhập proxy, điều này đã giúp tôi hoạt động trở lại.

Xem: https://support.microsoft.com/en-us/help/4026814/windows-accessing-credential-manager

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.