NuGet hinter einem Proxy

104

Ich finde heraus, dass NuGet die Konfiguration der Proxy-Einstellungen seit Version 1.4 zulässt. Ich kann jedoch kein Befehlszeilenbeispiel finden.

Ich versuche, einen Build auszuführen, und NuGet kann keine Verbindung herstellen.

Wie konfiguriere ich die Proxy-Einstellungen in der Befehlszeile?

Ricardo
quelle
1
Für andere Benutzer, bei denen Proxy-Probleme auftreten: Sie wissen, dass es sich um den Proxy handeln kann, wenn NuGet die Meldung anzeigt: "Der Remote-Name konnte nicht aufgelöst werden: 'nuget.org'"
pduncan
4
Achten Sie darauf, die http_proxyund https_proxyUmgebungsvariablen sowie Ihre System-Proxy-Einstellungen zu überprüfen
Colonel Panic
Es gibt jetzt ein Problem dafür auf github: github.com/NuGet/Home/issues/458
thekip

Antworten:

202

Folgendes habe ich getan, damit dies mit meinem Unternehmens-Proxy funktioniert, der die NTLM-Authentifizierung verwendet. Ich habe NuGet.exe heruntergeladen und dann die folgenden Befehle ausgeführt (die ich in den Kommentaren zu dieser Diskussion über CodePlex gefunden habe):

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

Dies legte die folgenden in meinem NuGet.configgelegen an %appdata%\NuGet(die Karten C: \ Users \ myUserName \ AppData \ Roaming auf meinem Windows 7 - Maschine):

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

Dies hat übrigens auch mein Problem behoben, dass NuGet nur beim ersten Aufrufen der Paketquelle in Visual Studio funktioniert.

Beachten Sie, dass einige Personen, die diesen Ansatz ausprobiert haben, in den Kommentaren gemeldet haben, dass sie das Setzen des http_proxy.passwordSchlüssels in der Befehlszeile unterlassen oder ihn nachträglich aus der Konfigurationsdatei löschen konnten und weiterhin über die NuGet-Funktion verfügen konnten über den Proxy.

Wenn Sie jedoch feststellen, dass Sie Ihr Kennwort in der NuGet-Konfigurationsdatei angeben müssen , müssen Sie das in der NuGet-Konfiguration gespeicherte Kennwort über die Befehlszeile über die Befehlszeile aktualisieren, wenn Ihre Proxy-Anmeldeinformationen auch Ihr Netzwerk sind Anmeldeinformationen .

Arcain
quelle
Die NuGet-Befehlszeile fügte die Einträge nicht zu meiner NuGet.config-Datei hinzu, aber nachdem ich die Datei manuell bearbeitet hatte, funktionierte sie hervorragend.
pduncan
19
In meinem Fall habe ich den Schlüssel http_proxy.password vollständig weggelassen und es schien mir eine Freude zu sein, meine authentifizierten AD-Anmeldeinformationen zu durchlaufen. Dies erspart die Notwendigkeit, das Passwort häufig zu ändern.
Sir Crispalot
5
Warnung Seien Sie vorsichtig, wenn Sie die von arcain vorgeschlagene Konfiguration verwenden. Stellen Sie sicher, dass Sie das Kennwort in der Konfigurationsdatei ändern, wenn Sie Ihr Windows-Kennwort ändern. Mein Windows-Konto wurde nach dem Ändern des Kennworts gemäß den Unternehmensrichtlinien nach dem Zufallsprinzip gesperrt. Ich habe einige Stunden gebraucht, um herauszufinden, dass dieser Konfigurationseintrag dieses ganze Problem verursacht. Die beste Option ist, einfach den http_proxy.password Schlüssel zu entfernen, wie von @Sir Crispalot
AJ Qarshi
3
Versuchen Sie, was Sir Crispalot erwähnt hat, und entfernen Sie den Schlüssel http_proxy.password. Das hat bei einigen Leuten funktioniert und es ihnen ermöglicht, das Passwort in der NuGet-Konfigurationsdatei nicht ändern zu müssen.
Arcain
4
Ein weiterer Sieg hier - die Verwendung dieser Einstellungen und das Weglassen des Kennwortschlüssels funktionierte für mich hinter meinem Unternehmens-Proxy mit NTLM-Authentifizierung.
6.
22

Vielleicht könnten Sie dies in Ihrer devenv.exe.config versuchen

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

Ich habe es im NuGet Issue Tracker gefunden

Es gibt auch andere wertvolle Kommentare zu NuGet + -Netzwerkproblemen.

Tx3
quelle
2
Dies setzt jedoch voraus, dass die Datei devenve.exe (Visual Studio) installiert ist, die sich nicht auf einem Build-Server befinden sollte
Kat Lim Ruiz
Ich musste diese Einstellung entfernen, damit sie funktioniert, damit sie den Proxy-Einstellungen des IE entspricht.
Rosdi Kasim
xml <system.net> <defaultProxy useDefaultCredentials="true" enabled="true"> </defaultProxy> <settings> <ipv6 enabled="true"/> </settings> </system.net> Arbeiten Sie für mich, es wurden die System-Proxy-Einstellungen verwendet. Getestet auf WINDOWS 10
Van Thoai Nguyen
11

Nur für den Fall, dass Sie die https-Version von nuget ( https://www.nuget.org ) verwenden, beachten Sie, dass Sie die Werte mit https festlegen müssen.

  • https_proxy
  • https_proxy.user
  • https_proxy.password
Roman Mahrer
quelle
1
Das https-Passwort ist Klartext in nuget.config, wenn Sie dem Arcains-Handbuch folgen, aber https
dmce
Dies hat mein Problem behoben, weitere Details hier github.com/NuGet/Home/issues/5980 .
Jpierson
Wir können also nicht 'http' verwenden, um die Proxy-Adresse festzulegen, wenn wir die https-Version von nuget verwenden?
Codierer kemp
8

Ich könnte mich irren, aber ich dachte, es werden die Proxy-Einstellungen des IE verwendet.

Wenn Sie sich anmelden müssen, wird ein Dialogfeld geöffnet, in dem Sie dazu aufgefordert werden (Anmeldung).

Die Beschreibung hierzu finden Sie hier -> http://docs.nuget.org/docs/release-notes/nuget-1.5

David McLean
quelle
1
Dies ist der Fall - das Problem bei diesem Ansatz tritt auf, wenn die Gruppenrichtlinien Ihres Unternehmens Ihre IE-Einstellungen kontinuierlich auf diejenigen zurücksetzen, die nicht mit Nuget funktionieren, wie dies an meinem Arbeitsplatz der Fall ist
Xcalibur,
5

Für alle Benutzer von VS2015: Ich habe den Fehler "407-Proxy-Authentifizierung erforderlich" festgestellt, der meinen Build beschädigt hat. Nach einigen Stunden der Untersuchung stellte sich heraus, dass MSBuild beim Versuch, Nuget als Teil des Ziels 'DownloadNuGet' herunterzuladen, keine Anmeldeinformationen gesendet hat. Die Lösung bestand darin, das folgende XML zu C hinzuzufügen: \ Programme (x86) \ MSBuild \ 14.0 \ Bin \ MSBuild.exe.config innerhalb des <configuration>Elements:

<system.net>
            <defaultProxy useDefaultCredentials="true">
            </defaultProxy>
</system.net>
r590
quelle
4

Die Lösung für mich war einzuschließen

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

In der nuget.configDatei.

jfernandeze
quelle
1
Wo finde ich diese Datei?
Marcelo Machado
2
@ MarceloMachado: Hier:% AppData% \ NuGet \ NuGet.config
Torben Kohlmeier
Der Speicherort des Benutzers nuget.config unter Windows 10:% ​​AppData% \ Roaming \ Nuget \ NuGet.config
Stato Machino
Sie können "<add key =" http_proxy "value =" http: // <IP>: <Port> "/>" alleine ausführen, ohne Benutzername und Kennwort anzugeben. Denken Sie daran, Visual Studio danach neu zu starten!
Taylorswiftfan
VS neu zu starten ist wichtig! Ich glaube auch, dass ich Probleme hatte, als Admin zu laufen (musste ich als normaler Benutzer laufen?)
Mars
3

Eine andere Variante für denselben "Proxy für Nuget": Alternativ können Sie Ihre Nuget-Proxy-Einstellungen so einstellen, dass eine Verbindung über Fiddler hergestellt wird . Unter cmd werden die Proxy-Einstellungen in der Standard-Nuget-Konfigurationsdatei für den Benutzer unter gespeichert%APPDATA%\NuGet\NuGet.Config

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

Wenn Sie Nuget benötigen, um auf das Internet zuzugreifen, öffnen Sie einfach Fiddler, und Sie haben Fiddler, der den Standardport 8888 abhört.

Diese Konfiguration reagiert nicht auf Passwork-Änderungen, da Fiddler die Authentifizierung mit dem Upstream-Proxy für Sie auflöst.

Aishel M.
quelle
2

Vielleicht hilft das jemand anderem. Für mich bestand die Lösung darin, die NuGet-Einstellungen in Visual Studio (2015/2017) zu öffnen und eine neue Feed-URL hinzuzufügen: http://www.nuget.org/api/v2/ .

Ich musste keine Proxy-bezogenen Einstellungen ändern.

Juliano Nunes Silva Oliveira
quelle
1

Nur eine kleine Ergänzung ...

Wenn es funktioniert, dass Sie nur die Einstellung http_proxy und nicht den Benutzernamen und das Kennwort angeben, würde ich empfehlen, die Proxy-Einstellungen in eine lokale Projektdatei nuget.config einzufügen und sie der Quellcodeverwaltung zu übergeben. Auf diese Weise erhalten alle Teammitglieder die gleichen Einstellungen.

Erstellen Sie eine leere. \ Nuget.config

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

Dann:

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

Und schließlich legen Sie Ihre neue lokale Projektdatei Nuget.config fest.

8DH
quelle
0

Versuchen Sie dies . Grundsätzlich kann die Verbindung fehlschlagen, wenn Ihr System dem Nuget-Zertifikat nicht vertraut.

Ivan Danilov
quelle
0

Abgesehen von den Vorschlägen von @arcain musste ich die folgende URL des Windows Azure Content Delivery Network zur Whitelist unseres Proxyservers hinzufügen:

.msecnd.net
mithun_daa
quelle
0

Oben Lösung von @arcain Plus unten Schritte haben mich das Problem gelöst

  1. Durch Ändern der "Paketquellen" unter den Einstellungen des Nuget-Paketmanagers, um das Kontrollkästchen für die Verwendung der Einstellungen von nuget.org zu aktivieren, wurde mein Problem behoben.

  2. Ich habe auch geändert, um das (nuget.org) als erste Wahl für die Paketquelle zu verwenden.
    Ich habe die Paketquellen meines Unternehmens deaktiviert, um sicherzustellen, dass das Nuget immer von globalen Quellen abgerufen wurde.

RAM
quelle
0

Unter Windows Server 2016 Standard, auf dem ich entwickelt habe, musste ich nur die Systemsteuerung des Anmeldeinformations-Managers öffnen und die zwischengespeicherten Proxy-Einstellungen für Visual Studio löschen, die nicht mehr gültig waren, und dann Visual Studio neu starten. Beim nächsten Öffnen des Nuget Package Managers wurde ich aufgefordert, Proxy-Anmeldeinformationen einzugeben, wodurch ich wieder arbeiten konnte.

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

jayint32
quelle