NuGet หลังพร็อกซี


105

ฉันคิดว่า NuGet อนุญาตให้กำหนดค่าการตั้งค่าพร็อกซีตั้งแต่เวอร์ชัน 1.4 แต่ฉันไม่พบตัวอย่างบรรทัดคำสั่ง

ฉันกำลังพยายามรันบิวด์และ NuGet ไม่สามารถเชื่อมต่อได้

ฉันจะกำหนดการตั้งค่าพร็อกซีบนบรรทัดคำสั่งได้อย่างไร


1
เพื่อประโยชน์ของผู้ใช้รายอื่นที่พบปัญหาเกี่ยวกับพร็อกซี: คุณจะรู้ว่าอาจเป็นพร็อกซีหาก NuGet แสดงข้อความ: "ไม่สามารถแก้ไขชื่อระยะไกลได้: 'nuget.org'"
pduncan

4
ระมัดระวังในการตรวจสอบตัวแปรhttp_proxyและhttps_proxyสภาพแวดล้อมรวมทั้งการตั้งค่าพร็อกซีระบบของคุณ
Colonel Panic

ตอนนี้มีปัญหาใน github: github.com/NuGet/Home/issues/458
thekip

คำตอบ:


204

นี่คือสิ่งที่ฉันทำเพื่อให้สิ่งนี้ทำงานร่วมกับพร็อกซีขององค์กรของฉันที่ใช้การตรวจสอบสิทธิ์ NTLM ฉันดาวน์โหลดNuGet.exeจากนั้นเรียกใช้คำสั่งต่อไปนี้ (ซึ่งฉันพบในความคิดเห็นของการสนทนาเกี่ยวกับ 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

นี้ทำให้ต่อไปนี้ในของฉันNuGet.configอยู่ที่%appdata%\NuGet(ซึ่งแมปไปยังC: \ Users \ MyUserName \ AppData \ Roamingบนเครื่อง 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>

อนึ่งสิ่งนี้ยังแก้ไขปัญหาของฉันด้วย NuGet ที่ใช้งานได้ในครั้งแรกที่ฉันกดแหล่งแพ็คเกจใน Visual Studio เท่านั้น

โปรดทราบว่าบางคนที่ได้ลองใช้แนวทางนี้ได้รายงานผ่านความคิดเห็นว่าพวกเขาสามารถละเว้นการตั้งค่าhttp_proxy.passwordคีย์จากบรรทัดคำสั่งหรือลบหลังจากความจริงออกจากไฟล์กำหนดค่าและยังสามารถมีฟังก์ชัน NuGet ได้ ข้ามพร็อกซี

อย่างไรก็ตามหากคุณพบว่าคุณต้องระบุรหัสผ่านของคุณในไฟล์กำหนดค่า NuGet โปรดจำไว้ว่าคุณต้องอัปเดตรหัสผ่านที่เก็บไว้ในการกำหนดค่า NuGet จากบรรทัดคำสั่งเมื่อคุณเปลี่ยนการเข้าสู่ระบบเครือข่ายของคุณหากข้อมูลรับรองพร็อกซีของคุณเป็นเครือข่ายของคุณด้วย หนังสือรับรอง


บรรทัดคำสั่ง NuGet ไม่ได้เพิ่มรายการลงในไฟล์ NuGet.config ของฉัน แต่เมื่อฉันแก้ไขไฟล์ด้วยตนเองมันก็ใช้งานได้ดี
pduncan

20
ในกรณีของฉันฉันไม่ใส่คีย์http_proxy.password โดยสิ้นเชิงและดูเหมือนว่าฉันจะยินดีที่จะส่งผ่านข้อมูลรับรอง AD ที่ได้รับการรับรองความถูกต้องของฉัน ซึ่งจะช่วยประหยัดไม่ต้องเปลี่ยนรหัสผ่านบ่อยๆ
Sir Crispalot

5
คำเตือนโปรดใช้ความระมัดระวังเมื่อคุณใช้การกำหนดค่าที่แนะนำโดย arcain ตรวจสอบว่าคุณเปลี่ยนรหัสผ่านในไฟล์กำหนดค่าเมื่อคุณเปลี่ยนรหัสผ่าน Windows บัญชี Windows ของฉันถูกล็อคแบบสุ่มหลังจากเปลี่ยนรหัสผ่านตามนโยบายของ บริษัท ฉันใช้เวลาสองสามชั่วโมงในการคิดว่ารายการกำหนดค่านี้ทำให้เกิดปัญหาทั้งหมดนี้ ตัวเลือกที่ดีที่สุดคือการลบคีย์http_proxy.passwordตามที่แนะนำโดย @Sir Crispalot
AJ Qarshi

3
ลองใช้สิ่งที่ Sir Crispalot กล่าวถึงและลบคีย์ http_proxy.password ที่ได้ผลสำหรับบางคนและอนุญาตให้พวกเขาหลีกเลี่ยงการเปลี่ยนรหัสผ่านในไฟล์กำหนดค่า NuGet
arcain

4
ชัยชนะอีกครั้งที่นี่ - การใช้การตั้งค่าเหล่านี้และการละเว้นคีย์รหัสผ่านได้ผลสำหรับฉันที่อยู่เบื้องหลังพร็อกซีขององค์กรด้วยการตรวจสอบสิทธิ์ NTLM
Cᴏʀʏ

22

บางทีคุณอาจลองใช้สิ่งนี้กับ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>

ฉันพบมันจากตัวติดตามปัญหาของ NuGet

นอกจากนี้ยังมีความคิดเห็นที่มีค่าอื่น ๆ เกี่ยวกับปัญหาเครือข่าย NuGet +


2
แต่ถือว่ามีการติดตั้ง devenve.exe (Visual Studio ที่) ซึ่งไม่ควรอยู่ในบิลด์เซิร์ฟเวอร์
Kat Lim Ruiz

ฉันต้องลบการตั้งค่านี้เพื่อให้ใช้งานได้เพื่อให้เป็นไปตามการตั้งค่าพร็อกซีของ IE
Rosdi Kasim

xml <system.net> <defaultProxy useDefaultCredentials="true" enabled="true"> </defaultProxy> <settings> <ipv6 enabled="true"/> </settings> </system.net> สำหรับฉันมันใช้การตั้งค่าพร็อกซีของระบบ ทดสอบบน WINDOWS 10
Van Thoai Nguyen

11

ในกรณีที่คุณใช้ nuget เวอร์ชัน https ( https://www.nuget.org ) โปรดทราบว่าคุณต้องตั้งค่าด้วย https

  • https_proxy
  • https_proxy.user
  • https_proxy.password

1
รหัสผ่าน https เป็นข้อความธรรมดาใน nuget.config หากคุณทำตามคู่มือ arcains แต่ใช้ https
dmce

การแก้ไขปัญหานี้ของฉันรายละเอียดเพิ่มเติมได้ที่นี่github.com/NuGet/Home/issues/5980
jpierson

ดังนั้นเราจึงไม่สามารถใช้ 'http' เพื่อตั้งค่าที่อยู่พร็อกซีหากเราใช้ nuget รุ่น https?
coder kemp

8

ฉันอาจจะผิด แต่ฉันคิดว่ามันใช้การตั้งค่าพร็อกซีของ IE

หากเห็นว่าคุณจำเป็นต้องเข้าสู่ระบบมันจะเปิดกล่องโต้ตอบและขอให้คุณทำเช่นนั้น (เข้าสู่ระบบนั่นคือ)

โปรดดูคำอธิบายที่นี่ -> http://docs.nuget.org/docs/release-notes/nuget-1.5


1
เป็นเช่นนั้น - ปัญหาเกี่ยวกับแนวทางนี้เกิดขึ้นเมื่อนโยบายกลุ่ม บริษัท ของคุณเปลี่ยนการตั้งค่า IE ของคุณอย่างต่อเนื่องเป็นแบบที่ไม่ทำงานกับ Nuget เช่นเดียวกับที่เกิดขึ้นในสถานที่ทำงานของฉัน
Xcalibur

5

สำหรับทุกคนที่ใช้ VS2015: ฉันพบข้อผิดพลาด "407 Proxy Authentication required" ซึ่งทำให้งานสร้างของฉันเสียหาย หลังจากตรวจสอบไม่กี่ชั่วโมงปรากฎว่า MSBuild ไม่ได้ส่งข้อมูลรับรองเมื่อพยายามดาวน์โหลด Nuget โดยเป็นส่วนหนึ่งของเป้าหมาย 'DownloadNuGet' วิธีแก้ปัญหาคือการเพิ่ม XML ต่อไปนี้ใน C: \ Program Files (x86) \ MSBuild \ 14.0 \ Bin \ MSBuild.exe.config ภายใน<configuration>องค์ประกอบ:

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

4

วิธีแก้ปัญหาสำหรับฉันคือการรวม

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

ในnuget.configไฟล์.


1
ฉันจะหาไฟล์นี้ได้ที่ไหน?
Marcelo Machado

2
@MarceloMachado: ที่นี่:% AppData% \ NuGet \ NuGet.config
Torben Kohlmeier

ตำแหน่ง nuget.config ของผู้ใช้บน Windows 10:% ​​AppData% \ Roaming \ Nuget \ NuGet.config
Stato Machino

คุณสามารถเลือกทำ `<add key =" http_proxy "value =" http: // <IP>: <Port> "/>` เพียงอย่างเดียวโดยไม่ต้องระบุชื่อผู้ใช้และรหัสผ่าน อย่าลืมรีสตาร์ท Visual Studio หลังจากนั้น!
taylorswiftfan

การรีสตาร์ท VS เป็นสิ่งสำคัญ! นอกจากนี้ฉันคิดว่าฉันมีปัญหาในการทำงานในฐานะผู้ดูแลระบบ (จำเป็นต้องเรียกใช้ในฐานะผู้ใช้ทั่วไปหรือไม่)
อังคาร

4

รสชาติอีกสำหรับ "พร็อกซี่สำหรับ nuget" เดียวกันฉะนั้นคุณสามารถตั้งค่า proxing nuget ของคุณเพื่อเชื่อมต่อผ่านไวโอลิน ด้านล่าง cmd จะบันทึกการตั้งค่าพร็อกซีในไฟล์กำหนดค่าเริ่มต้นของ nuget สำหรับผู้ใช้ที่%APPDATA%\NuGet\NuGet.Config

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

เมื่อใดก็ตามที่คุณต้องการนักเล่นเกมเพื่อเข้าถึงอินเทอร์เน็ตเพียงแค่เปิด Fiddler เนื่องจากคุณมีมือเล่นซอบนพอร์ตเริ่มต้น 8888

การกำหนดค่านี้ไม่ไวต่อการเปลี่ยนแปลง passwork เนื่องจาก fiddler จะแก้ไขการพิสูจน์ตัวตนด้วย up stream proxy ให้คุณ


2

บางทีนี่อาจช่วยคนอื่นได้ สำหรับผมการแก้ปัญหาคือการเปิดการตั้งค่า NuGet ใน Visual Studio (2015/2017) และเพิ่ม URL ของฟีดใหม่: http://www.nuget.org/api/v2/

ฉันไม่ต้องเปลี่ยนการตั้งค่าที่เกี่ยวข้องกับพร็อกซี


1

เพิ่มเติมเพียงเล็กน้อย ...

หากใช้งานได้เพื่อให้คุณระบุการตั้งค่า http_proxy เท่านั้นไม่ใช่ชื่อผู้ใช้และรหัสผ่านฉันขอแนะนำให้วางการตั้งค่าพร็อกซีในไฟล์ nuget.config ในเครื่องของโปรเจ็กต์และกำหนดให้กับการควบคุมแหล่งที่มา ด้วยวิธีนี้สมาชิกในทีมทุกคนจะได้รับการตั้งค่าเดียวกัน

สร้างไฟล์. \ nuget.config

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

จากนั้น:

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

และในที่สุดก็ยอมรับไฟล์ Nuget.config ในเครื่องโครงการใหม่ของคุณ


1

ใน Windows Server 2016 Standard ซึ่งเป็นสิ่งที่ฉันพัฒนาฉันต้องเปิดแผงควบคุมตัวจัดการข้อมูลรับรองและล้างการตั้งค่าพร็อกซีที่แคชไว้สำหรับ Visual Studio ซึ่งไม่ถูกต้องอีกต่อไปจากนั้นรีสตาร์ท Visual Studio ครั้งต่อไปที่ฉันเปิด Nuget Package Manager ฉันได้รับพร้อมท์สำหรับข้อมูลรับรองพร็อกซีซึ่งทำให้ฉันทำงานได้อีกครั้ง

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


ทำงานให้ฉันเมื่อได้รับข้อผิดพลาด 407 สำหรับ repo ภายในองค์กร
thudbutt


0

นอกเหนือจากคำแนะนำจาก @arcain แล้วฉันต้องเพิ่ม URL ของ Windows Azure Content Delivery Network ต่อไปนี้ในรายการสีขาวของพร็อกซีเซิร์ฟเวอร์ของเรา:

.msecnd.net

0

โซลูชันด้านบนโดย @arcain Plus ขั้นตอนด้านล่างช่วยแก้ปัญหาให้ฉันได้

  1. การแก้ไข "แหล่งแพ็กเกจ" ภายใต้การตั้งค่าตัวจัดการแพ็คเกจ Nuget เพื่อทำเครื่องหมายในช่องเพื่อใช้การตั้งค่า nuget.org ช่วยแก้ปัญหาของฉันได้

  2. ฉันยังเปลี่ยนไปใช้ (nuget.org) เป็นตัวเลือกแรกของแหล่งแพ็กเกจ
    ฉันไม่ได้เลือกแหล่งที่มาของแพ็คเกจ บริษัท ของฉันเพื่อให้แน่ใจว่านักเก็ตถูกหยิบมาจากแหล่งทั่วโลกเสมอ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.