הבקשה חייבת להשתמש ב־HttpClient שנבנה עם מטפל הפרוקסי שלכם. יצירת אובייקט 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 אסינכרוני.

בדקו את שתי תכונות המטפל: Proxy בוחרת את נקודת הקצה ו־UseProxy=true מפעילה את השימוש בה. אם הנקודה עובדת בנפרד אבל לא ביישום, ודאו שאין קוד שמכבה את UseProxy ושהקריאה משתמשת במופע הזה. המטפל הייעודי מונע תלות בגילוי פרוקסי דרך התהליך או מערכת ההפעלה.

כשמפעיל הפרוקסי מספק חשבון, הקצו NetworkCredential לתכונה WebProxy.Credentials. Authorization של האתר מיועדת לשלב אחר, ורשומת IP:port ציבורית אינה מספקת כניסה כברירת מחדל. מאזין http:// יכול להעביר HTTPS במנהרה; השאירו את אימות היעד הרגיל.

התוכנית הקצרה משחררת אובייקטים ביציאה. בקריאות שירות חוזרות פעלו לפי הנחיות .NET לאורך חיי הלקוח ושמרו את הלקוח/המטפל לעומס העבודה, במקום לבנות מחדש מאגרי חיבורים לכל בקשה. בדקו את המצב שחוזר: מסלול פרוקסי תקין עדיין יכול להעביר דחייה מהאתר.

מאמרים קשורים