Forespørgslen skal bruge den HttpClient, der er oprettet med din proxyhandler. Et uvedkommende WebProxy-objekt ændrer ikke en anden klients rute.

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());

Erstat dokumentationsadressen med en rigtig HTTP-proxy fra din tjeneste eller HTTP-proxylisten. Denne topniveausyntaks passer til et moderne C#-konsolprojekt; ældre projekter kan placere sætningerne i en asynkron Main.

Kontrollér begge handleregenskaber: Proxy vælger endepunktet, og UseProxy=true aktiverer brugen. Virker endepunktet separat, men ikke i programmet, skal du sikre, at ingen kode deaktiverer UseProxy, og at kaldet bruger denne instans. Den særlige handler undgår afhængighed af proces- eller OS-opdagelse.

Når proxyoperatøren giver en konto, skal du tildele en NetworkCredential til egenskaben WebProxy.Credentials. Webstedets Authorization gælder et andet hop, og en offentlig IP:port-post giver ingen standardloginoplysninger. En http://-lytter kan transportere HTTPS gennem en tunnel; behold normal destinationsverifikation.

Dette korte program frigiver objekter ved afslutning. Ved gentagne tjenestekald skal du følge .NET-vejledningen om klientlevetid og beholde klient/handler til arbejdsbelastningen frem for at genopbygge forbindelsespuljerne for hver forespørgsel. Undersøg den returnerede status: En fungerende proxyrute kan stadig transportere en afvisning fra webstedet.

Relaterede artikler