NuGet derrière un proxy


105

Je comprends que NuGet permet la configuration des paramètres de proxy depuis la version 1.4. Mais, je ne trouve aucun exemple de ligne de commande.

J'essaie d'exécuter une compilation et NuGet ne peut pas se connecter.

Comment configurer les paramètres proxy sur la ligne de commande?


1
Pour le bénéfice des autres utilisateurs rencontrant des problèmes de proxy: vous saurez qu'il pourrait s'agir du proxy si NuGet affiche le message: "Le nom distant n'a pas pu être résolu: 'nuget.org'"
pduncan

4
Veillez à vérifier les variables d'environnement http_proxyet https_proxyainsi que vos paramètres de proxy système
Colonel Panic

Il y a un problème pour ça maintenant sur github: github.com/NuGet/Home/issues/458
thekip

Réponses:


204

Voici ce que j'ai fait pour que cela fonctionne avec mon proxy d'entreprise qui utilise l'authentification NTLM. J'ai téléchargé NuGet.exe , puis j'ai exécuté les commandes suivantes (que j'ai trouvées dans les commentaires de cette discussion sur 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

Cela place ce qui suit dans mon NuGet.configsitué à %appdata%\NuGet(qui correspond à C: \ Users \ myUserName \ AppData \ Roaming sur ma machine 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>

Incidemment, cela a également résolu mon problème avec NuGet ne fonctionnant que la première fois que j'ai atteint la source du package dans Visual Studio.

Notez que certaines personnes qui ont essayé cette approche ont signalé dans les commentaires qu'elles avaient pu omettre de définir la http_proxy.passwordclé de la ligne de commande, ou la supprimer après coup du fichier de configuration, et pouvaient toujours avoir la fonction NuGet à travers le proxy.

Si vous trouvez, cependant, que vous devez spécifier votre mot de passe dans le fichier de configuration NuGet, n'oubliez pas que vous devez mettre à jour le mot de passe stocké dans la configuration NuGet à partir de la ligne de commande lorsque vous modifiez votre connexion réseau, si vos informations d'identification de proxy sont également votre réseau informations d'identification .


La ligne de commande NuGet n'ajoutait pas les entrées à mon fichier NuGet.config, mais une fois que j'ai modifié manuellement le fichier, cela fonctionnait très bien.
pduncan

20
Dans mon cas, j'ai complètement omis la clé http_proxy.password et il semblait être heureux de passer par mes informations d'identification AD authentifiées. Cela évite de devoir changer fréquemment le mot de passe.
Sir Crispalot

5
Attention Soyez prudent lorsque vous utilisez la configuration suggérée par arcain. Assurez-vous de modifier le mot de passe dans le fichier de configuration lorsque vous modifiez votre mot de passe Windows. Mon compte Windows a été verrouillé au hasard après avoir changé le mot de passe conformément à la politique de l'entreprise. Il m'a fallu quelques heures pour comprendre que c'est cette entrée de configuration qui causait tout ce problème. La meilleure option est simplement de supprimer la clé http_proxy.password comme suggéré par @Sir Crispalot
AJ Qarshi

3
Essayez ce que Sir Crispalot a mentionné et supprimez la clé http_proxy.password. Cela a fonctionné pour certaines personnes et leur a permis d'éviter d'avoir à changer le mot de passe dans le fichier de configuration NuGet.
arcain

4
Une autre victoire ici - utiliser ces paramètres et omettre la clé de mot de passe a fonctionné pour moi derrière mon proxy d'entreprise avec authentification NTLM.
Cᴏʀʏ

22

Peut-être que vous pourriez essayer ceci sur votre 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>

Je l'ai trouvé à partir du suivi des problèmes NuGet

Il existe également d'autres commentaires utiles sur les problèmes de réseau NuGet +.


2
mais cela suppose que devenve.exe (Visual Studio qui est) est installé, qui ne devrait pas être dans un serveur de génération
Kat Lim Ruiz

J'ai dû supprimer ce paramètre pour le faire fonctionner, afin qu'il suive les paramètres de proxy d'IE.
Rosdi Kasim

xml <system.net> <defaultProxy useDefaultCredentials="true" enabled="true"> </defaultProxy> <settings> <ipv6 enabled="true"/> </settings> </system.net> Travaillez pour moi, il a utilisé les paramètres de proxy du système. Testé sur WINDOWS 10
Van Thoai Nguyen le

11

Juste au cas où vous utilisez la version https de nuget ( https://www.nuget.org ), sachez que vous devez définir les valeurs avec https.

  • https_proxy
  • https_proxy.user
  • https_proxy.password

1
Le mot de passe https est en texte brut dans nuget.config si vous suivez le guide arcains mais en utilisant https
dmce

Cela a résolu mon problème, plus de détails ici github.com/NuGet/Home/issues/5980 .
jpierson

Nous ne pouvons donc pas utiliser «http» pour définir l'adresse proxy si nous utilisons la version https de nuget?
coder kemp

8

Je peux me tromper mais je pensais qu'il utilisait les paramètres proxy d'IE.

S'il voit que vous devez vous connecter, il ouvre une boîte de dialogue et vous demande de le faire (connexion c'est-à-dire).

Veuillez consulter la description de ceci ici -> http://docs.nuget.org/docs/release-notes/nuget-1.5


1
C'est le cas - le problème avec cette approche survient lorsque la politique de groupe de votre société rétablit continuellement vos paramètres IE à ceux qui ne fonctionnent pas avec Nuget, comme cela se produit sur mon lieu de travail
Xcalibur

5

À toute personne utilisant VS2015: je rencontrais une erreur «407 Proxy Authentication required», qui a cassé ma version. Après quelques heures d'enquête, il s'avère que MSBuild n'envoyait pas d'informations d'identification lors de la tentative de téléchargement de Nuget dans le cadre de la cible 'DownloadNuGet'. La solution consistait à ajouter le code XML suivant à C: \ Program Files (x86) \ MSBuild \ 14.0 \ Bin \ MSBuild.exe.config à l'intérieur de l' <configuration>élément:

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

4

La solution pour moi était d'inclure

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

Dans le nuget.configfichier.


1
Où puis-je trouver ce fichier?
Marcelo Machado

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

Emplacement nuget.config de l'utilisateur sur Windows 10:% ​​AppData% \ Roaming \ Nuget \ NuGet.config
Stato Machino

Vous pouvez choisir de faire `<add key =" http_proxy "value =" http: // <IP>: <Port> "/>` seul sans spécifier le nom d'utilisateur et le mot de passe. N'oubliez pas de redémarrer Visual Studio après cela!
taylorswiftfan

Redémarrer VS est important! De plus, je pense que j'ai eu des problèmes de fonctionnement en tant qu'administrateur (nécessaire pour fonctionner en tant qu'utilisateur régulier?)
Mars

4

Une autre saveur pour le même "proxy pour nuget": vous pouvez également définir vos paramètres de proxy nuget pour vous connecter via Fiddler . Ci-dessous cmd enregistrera les paramètres de proxy dans le fichier de configuration par défaut du nuget pour l'utilisateur à%APPDATA%\NuGet\NuGet.Config

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

Chaque fois que vous avez besoin de nuget pour accéder à Internet, ouvrez simplement Fiddler, car vous avez un violon écoutant sur le port par défaut 8888.

Cette configuration n'est pas sensible aux changements de passwork car Fiddler résoudra pour vous toute authentification avec un proxy en amont.



1

Juste un petit ajout ...

Si cela fonctionne pour vous de ne fournir que le paramètre http_proxy et non le nom d'utilisateur et le mot de passe, je vous recommande de placer les paramètres de proxy dans un fichier nuget.config local du projet et de le valider au contrôle de code source. De cette façon, tous les membres de l'équipe obtiennent les mêmes paramètres.

Créez un. \ Nuget.config vide

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

Ensuite:

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

Et enfin, validez votre nouveau fichier Nuget.config local de projet.


0

Essayez ceci . Fondamentalement, la connexion peut échouer si votre système ne fait pas confiance au certificat nuget.


0

Outre les suggestions de @arcain, j'ai dû ajouter l'URL suivante du réseau de distribution de contenu Windows Azure à la liste blanche de notre serveur proxy:

.msecnd.net

0

Ci-dessus Solution by @arcain Plus, les étapes ci-dessous m'ont résolu le problème

  1. La modification des "sources du package" sous les paramètres du gestionnaire de packages Nuget pour cocher la case pour utiliser les paramètres nuget.org a résolu mon problème.

  2. J'ai également changé pour utiliser cela (nuget.org) comme premier choix de source de paquet.
    J'ai décoché les sources de paquet de ma société pour m'assurer que le nuget était toujours récupéré à partir de sources mondiales.


0

Sur Windows Server 2016 Standard, sur lequel je développe, je devais simplement ouvrir le panneau de configuration Credential Manager et effacer les paramètres de proxy mis en cache pour Visual Studio qui n'étaient plus valides, puis redémarrer Visual Studio. La prochaine fois que j'ai ouvert le gestionnaire de packages Nuget, on m'a demandé des informations d'identification de proxy, ce qui m'a permis de travailler à nouveau.

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

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.