Skriv WebProxy-unntak som regulære uttrykk
Bygg et gyldig unntaksuttrykk for System.Net.WebProxy med escapede punktum og eksplisitte vertsnavngrenser i stedet for et skall-lignende jokertegn.
BypassList-argumentet i System.Net.WebProxy inneholder regulære uttrykk. Et mønster som *.office.example er ugyldig fordi den ledende stjernen ikke har noe forrige uttrykk å gjenta.
For HTTP- og HTTPS-forespørsler til office.example og underdomenene kan en PowerShell-konfigurasjon bruke:
$bypass = @('^https?://([a-z0-9-]+\.)*office\.example(:[0-9]+)?$')
$proxy = [System.Net.WebProxy]::new(
'http://proxy.example:8080',
$false,
[string[]]$bypass
)
De escapede punktene samsvarer med bokstavelige punktum. Den gjentatte gruppen for vertsnavnetikett tillater både basisdomenet og navn under det. Ankerne holder et navn som office.example.other.test utenfor denne regelen. PowerShell-strenger i enkle anførselstegn bevarer de omvendte skråstrekene som uttrykket bruker.
Den nåværende .NET-implementasjonen matcher disse uttrykkene mot destinasjonens skjema, vertsnavn og ikke-standardport. Den omfatter ikke forespørselsstien eller spørrestrengen. Den valgfrie portgruppen tillater derfor også ikke-standardporter; fjern eller snevn den inn hvis policyen krever en bestemt tjeneste.
BypassProxyOnLocal er false i dette eksempelet, slik at regex-policyen kan undersøkes atskilt fra den ekstra unntaksinnstillingen. Knytt det resulterende proxyobjektet til HTTP-klienten som skal bruke det. For en tillatt offentlig URL-test utenfor unntaksdomenet kan en HTTP-oppføring fra HTTP proxy list oppgi adressen sin, uten en konfigurert proxykonto.
Bruk IsBypassed med representative Uri-verdier for å undersøke rutervalget: basisdomenet, ett underdomene, en urelatert ekstern vert og et villedende lengre suffiks. Et true-resultat betyr at direkte tilgang ble valgt; det beviser ikke at den direkte destinasjonen er tilgjengelig.