NuGet dietro un proxy


104

Ho scoperto che NuGet consente la configurazione delle impostazioni proxy dalla versione 1.4. Ma non riesco a trovare alcun esempio della riga di comando.

Sto cercando di eseguire alcune build e NuGet non riesce a connettersi.

Come si configurano le impostazioni del proxy sulla riga di comando?


1
A vantaggio di altri utenti che riscontrano problemi con il proxy: saprai che potrebbe essere il proxy se NuGet visualizza il messaggio: "Impossibile risolvere il nome remoto: 'nuget.org'"
pduncan

4
Fai attenzione a controllare le variabili di ambiente http_proxye https_proxycosì come le impostazioni del proxy di sistema
Colonel Panic

C'è un problema ora su GitHub: github.com/NuGet/Home/issues/458
thekip

Risposte:


202

Ecco cosa ho fatto per farlo funzionare con il mio proxy aziendale che utilizza l'autenticazione NTLM. Ho scaricato NuGet.exe e poi ho eseguito i seguenti comandi (che ho trovato nei commenti a questa discussione su 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

Questo ha inserito quanto segue nel mio si NuGet.configtrova in %appdata%\NuGet(che mappa a C: \ Users \ myUserName \ AppData \ Roaming sulla mia macchina Windows 7):

<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>

Per inciso, questo ha anche risolto il mio problema con NuGet che funzionava solo la prima volta che ho raggiunto l'origine del pacchetto in Visual Studio.

Si noti che alcune persone che hanno provato questo approccio hanno segnalato attraverso i commenti di essere stati in grado di omettere l'impostazione della http_proxy.passwordchiave dalla riga di comando o di eliminarla a posteriori dal file di configurazione e di essere ancora in grado di avere la funzione NuGet attraverso il proxy.

Se si scopre, tuttavia, che è necessario specificare la password nel file di configurazione di NuGet, ricordare che è necessario aggiornare la password memorizzata nella configurazione di NuGet dalla riga di comando quando si modifica l'accesso alla rete, se le credenziali del proxy sono anche la rete credenziali .


La riga di comando di NuGet non ha aggiunto le voci al mio file NuGet.config, ma una volta modificato manualmente il file, ha funzionato alla grande.
pduncan

19
Nel mio caso, ho omesso completamente la chiave http_proxy.password e sembrava essere felice di passare attraverso le mie credenziali AD autenticate. Ciò evita di dover cambiare frequentemente la password.
Sir Crispalot

5
Avvertimento Fai attenzione quando usi la configurazione suggerita da arcain. Assicurati di cambiare la password nel file di configurazione quando cambi la password di Windows. Il mio account Windows è stato bloccato in modo casuale dopo aver modificato la password secondo la politica aziendale. Mi ci sono volute alcune ore per capire che è questa voce di configurazione a causare l'intero problema. L'opzione migliore è rimuovere semplicemente la chiave http_proxy.password come suggerito da @Sir Crispalot
AJ Qarshi,

3
Prova quello che ha detto Sir Crispalot e rimuovi la chiave http_proxy.password. Ciò ha funzionato per alcune persone e ha consentito loro di evitare di dover modificare la password nel file di configurazione di NuGet.
arcain

4
Un'altra vittoria qui: l'utilizzo di queste impostazioni e l'omissione della chiave della password ha funzionato per me dietro il mio proxy aziendale con autenticazione NTLM.
Cᴏʀʏ

22

Forse potresti provare questo sul tuo devenv.exe.config

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

L'ho trovato dal tracker NuGet Issue

Ci sono anche altri commenti preziosi sui problemi di rete NuGet +.


2
ma questo presuppone che sia installato devenve.exe (ovvero Visual Studio), che non dovrebbe essere in un server di compilazione
Kat Lim Ruiz

Ho dovuto rimuovere questa impostazione per farlo funzionare, in modo che seguisse le impostazioni del proxy di IE.
Rosdi Kasim

xml <system.net> <defaultProxy useDefaultCredentials="true" enabled="true"> </defaultProxy> <settings> <ipv6 enabled="true"/> </settings> </system.net> Funziona per me, ha utilizzato le impostazioni del proxy di sistema. Testato su WINDOWS 10
Van Thoai Nguyen

11

Nel caso in cui utilizzi la versione https di nuget ( https://www.nuget.org ), tieni presente che devi impostare i valori con https.

  • https_proxy
  • https_proxy.user
  • https_proxy.password

1
La password https è di testo normale in nuget.config se segui la guida di arcains ma usi https
dmce

Questo ha risolto il mio problema, maggiori dettagli qui github.com/NuGet/Home/issues/5980 .
jpierson

Quindi non possiamo usare 'http' per impostare l'indirizzo proxy se stiamo usando la versione https di nuget?
coder kemp

8

Potrei sbagliarmi ma pensavo che usasse le impostazioni proxy di IE.

Se vede che devi effettuare il login, apre una finestra di dialogo e ti chiede di farlo (login cioè).

Si prega di vedere la descrizione di questo qui -> http://docs.nuget.org/docs/release-notes/nuget-1.5


1
Sì - il problema con questo approccio si pone quando la politica di gruppo della tua azienda riporta continuamente le tue impostazioni di IE a quelle che non funzionano con Nuget, come accade al mio posto di lavoro
Xcalibur

5

Per chiunque utilizzi VS2015: Ho riscontrato un errore "407 Proxy Authentication required", che ha rotto la mia build. Dopo alcune ore di indagini, risulta che MSBuild non inviava le credenziali durante il tentativo di scaricare Nuget come parte dell'obiettivo "DownloadNuGet". La soluzione era aggiungere il seguente XML a C: \ Program Files (x86) \ MSBuild \ 14.0 \ Bin \ MSBuild.exe.config all'interno <configuration>dell'elemento:

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

4

La soluzione per me era includere

<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>

Nel nuget.configfile.


1
Dove posso trovare questo file?
Marcelo Machado

2
@MarceloMachado: qui:% AppData% \ NuGet \ NuGet.config
Torben Kohlmeier

posizione nuget.config dell'utente su Windows 10:% ​​AppData% \ Roaming \ Nuget \ NuGet.config
Stato Machino

Puoi scegliere di eseguire "<add key =" http_proxy "value =" http: // <IP>: <Port> "/>" senza specificare nome utente e password. Ricorda di riavviare Visual Studio dopo!
taylorswiftfan

Il riavvio di VS è importante! Inoltre, penso di aver avuto problemi con l'esecuzione come amministratore (necessario per eseguire come utente normale?)
Marte

4

Un altro sapore per lo stesso "proxy per nuget": in alternativa puoi impostare le tue impostazioni di proxy per nuget per connetterti tramite fiddler . Sotto cmd salverà le impostazioni del proxy nel file di configurazione nuget predefinito per l'utente in%APPDATA%\NuGet\NuGet.Config

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

Ogni volta che hai bisogno di nuget per raggiungere Internet, apri semplicemente Fiddler, supponendo che tu abbia Fiddler in ascolto sulla porta predefinita 8888.

Questa configurazione non è sensibile alle modifiche al passwork perché Fiddler risolverà qualsiasi autenticazione con il proxy up stream per te.



1

Solo una piccola aggiunta ...

Se funziona per te fornire solo l'impostazione http_proxy e non il nome utente e la password, ti consiglio di inserire le impostazioni del proxy in un file nuget.config locale del progetto e di inviarlo al controllo del codice sorgente. In questo modo tutti i membri del team ottengono le stesse impostazioni.

Crea un file. \ Nuget.config

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

Poi:

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

E infine eseguire il commit del file Nuget.config locale del nuovo progetto.


0

Prova questo . Fondamentalmente, la connessione potrebbe non riuscire se il tuo sistema non si fida del certificato nuget.


0

Oltre ai suggerimenti di @arcain, ho dovuto aggiungere il seguente URL della rete per la distribuzione di contenuti di Windows Azure alla lista bianca del nostro server proxy:

.msecnd.net

0

La soluzione sopra di @arcain Plus sotto i passaggi mi ha risolto il problema

  1. La modifica delle "origini dei pacchetti" nelle impostazioni del gestore dei pacchetti di Nuget per selezionare la casella di controllo per utilizzare le impostazioni di nuget.org ha risolto il mio problema.

  2. Ho anche cambiato per usarlo (nuget.org) come prima scelta della fonte del pacchetto
    Ho deselezionato le fonti del pacchetto della mia azienda per assicurarmi che il nuget fosse sempre prelevato da fonti globali.


0

Su Windows Server 2016 Standard, che è quello su cui sviluppo, dovevo solo aprire il Pannello di controllo di Credential Manager e cancellare le impostazioni del proxy memorizzato nella cache per Visual Studio che non erano più valide e quindi riavviare Visual Studio. La volta successiva che ho aperto il Gestore pacchetti Nuget, mi sono state richieste le credenziali proxy, che mi hanno fatto tornare a lavorare.

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

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.