คำขอต้องใช้ HttpClient ที่สร้างด้วย handler พร็อกซีของคุณ การสร้างออบเจ็กต์ WebProxy ที่ไม่เกี่ยวข้องไม่ได้เปลี่ยนเส้นทางของไคลเอนต์ตัวอื่น

using System;
using System.Net;
using System.Net.Http;

var proxy = new WebProxy("http://203.0.113.10:8080")
{
    BypassProxyOnLocal = false
};

using var handler = new HttpClientHandler
{
    Proxy = proxy,
    UseProxy = true
};

using var client = new HttpClient(handler)
{
    Timeout = TimeSpan.FromSeconds(15)
};

using var response = await client.GetAsync("https://example.com/");
Console.WriteLine((int)response.StatusCode);
Console.WriteLine(await response.Content.ReadAsStringAsync());

แทนที่อยู่ตัวอย่างด้วยพร็อกซี HTTP จริงจากบริการของคุณหรือรายการพร็อกซี HTTP ไวยากรณ์ระดับบนนี้เหมาะกับโครงการคอนโซล C# สมัยใหม่ ส่วนโครงการเก่าอาจวางคำสั่งใน Main แบบอะซิงโครนัส

ตรวจทั้งสองพร็อพเพอร์ตีของ handler: Proxy เลือกเอนด์พอยต์ และ UseProxy=true เปิดใช้ หากเอนด์พอยต์ใช้ได้แยกกันแต่ในแอปไม่ได้ ให้ยืนยันว่าไม่มีโค้ดปิด UseProxy และการเรียกใช้เป็นอินสแตนซ์นี้ handler เฉพาะช่วยไม่ต้องพึ่งการค้นหาของโปรเซสหรือ OS

เมื่อผู้ดูแลพร็อกซีให้บัญชีมา ให้กำหนด NetworkCredential แก่พร็อพเพอร์ตี WebProxy.Credentials ส่วน Authorization ของเว็บไซต์ใช้กับคนละช่วง และรายการ IP:port สาธารณะไม่ได้ให้ข้อมูลเข้าสู่ระบบเริ่มต้น ลิสเทนเนอร์ http:// ส่ง HTTPS ผ่านอุโมงค์ได้ ให้คงการตรวจสอบปลายทางตามปกติ

โปรแกรมสั้นนี้คืนทรัพยากรของออบเจ็กต์เมื่อออก สำหรับการเรียกบริการซ้ำ ให้ทำตามคำแนะนำอายุการใช้งานไคลเอนต์ของ .NET และเก็บไคลเอนต์/handler ไว้ตามภาระงาน แทนสร้าง connection pool ใหม่ทุกคำขอ ตรวจสถานะที่คืนมาด้วย เส้นทางพร็อกซีที่ทำงานได้ยังส่งคำปฏิเสธจากเว็บไซต์มาได้

บทความที่เกี่ยวข้อง