Kontroleer 'n proxylys met begrensde gelyktydigheid
Beperk gelyktydige proxykontroles en teken aan wat elke kontrole werklik vir sy teikenwebwerf vasgestel het.
var options = new ParallelOptions
{
MaxDegreeOfParallelism = 8,
CancellationToken = cancellationToken
};
await Parallel.ForEachAsync(endpoints, options,
async (endpoint, token) =>
{
var result = await ProbeAsync(endpoint, target, token);
observations.Add(result);
});Gebruik 'n begrensde werkerpoel eerder as om een taak per eindpunt te begin. Vir kontroles teen toegelate openbare teikens lewer die gratis proxylys kandidaatreëls; behou elke inskrywing se protokol wanneer jy die ondersoek bou. Hierdie .NET-skeduleringsfragment aanvaar 'n proxy-bewuste ProbeAsync en 'n draadveilige observations-versamelaar. Agt is 'n illustratiewe perk, nie 'n gemete optimum nie. Die ondersoek het steeds per-poging beperkings en kansellasie van die hele taak nodig.
Hou elke voltooide resultaat saam met sy insette, selfs wanneer die voltooiingsorde verskil. Teken protokol, eindpunt, teiken, metode, verstreke tyd en uitkoms aan. Verbindingsfout, weiering van proxy-aanmelding, geweierde CONNECT en 'n ontvangde webwerfrespons is verskillende waarnemings.
'n Oop TCP-poort bewys nie proxy-onderhandeling nie. Om die proxy-adres as 'n webwerf te haal, verskil ook van om dit te gebruik om die teiken aan te vra.
Kies die teiken en metode volgens die vereiste vermoë. HEAD kan liggaamsverkeer spaar, maar bewys nie dat GET bruikbare inhoud teruggee nie; 'n webwerf kan die een weier en die ander toelaat. HTTPS voeg CONNECT en bestemming-TLS by wat in gewone HTTP ontbreek. 'n Uitgangadres is nog 'n waarneming aan die bestemmingskant, apart van die gekonfigureerde ingang.
Begrensde werk verhoed dat die kontroleerder sy eie sokkels, geheue of skeduleerder uitgeput voordat hy die roete kan beoordeel. 'n Gefaseerde resultaat bly nuttig vir die keuringsbeleid sonder om te maak asof een suksesvolle bestemming 'n eindpunt universeel goed maak.