C'è un modo per ottenere un System.Net.WebRequest
o System.Net.WebClient
per rispettare il file hosts
o lmhosts
?System.Net.WebRequest non rispetta il file hosts
Per esempio: nel mio file hosts che ho:
10.0.0.1 www.bing.com
quando provo a caricare Bing in un browser (IE e FF) non riesce a caricare come previsto.
Dns.GetHostAddresses("www.bing.com")[0]; // 10.0.0.1
WebRequest.Create("http://10.0.0.1").GetResponse(); // throws exception (expected)
WebRequest.Create("http://www.bing.com/").GetResponse(); // unexpectedly succeeds
Allo stesso modo:
WebClient wc = new WebClient();
wc.DownloadString("http://www.bing.com"); //succeeds
Perché sarebbe System.Net.Dns
rispettare il file hosts ma System.Net.WebRequest
ignorarlo? Cosa devo modificare per rendere la richiesta WebRequest il file hosts?
Informazione supplementare:
- Se rendo invalido IPv6 e IPv4 impostare il mio server DNS a 127.0.0.1, il codice precedente funziona (fallisce) come previsto. Tuttavia, se aggiungo i miei normali server DNS come sostituti, riprende il comportamento imprevisto.
- Ho riprodotto questo su 3 Win7 e 2 scatole di Vista. L'unica costante è la rete della mia azienda.
- sto usando .NET 3.5 SP1 e VS2008
Modifica
suggerimento di Per @pluto Beier, ho provato System.Net
tracing. Con tracciando ON la WebRequest
non riesce come dovrebbe. Tuttavia, come appena mi volto tracciando OFF il comportamento ritorna al successo inaspettato. L'ho riprodotto sulle stesse macchine di prima in entrambe le modalità di debug e release.
Edit 2
questo si è rivelato essere il proxy aziendale dandoci problemi. La nostra soluzione è stata uno script di configurazione proxy personalizzato per le nostre macchine di test che ha avuto "bing.com" Punto su DIRECT al posto del proxy predefinito.
Sto indovinando si sta lavorando attraverso un proxy nella rete. Cosa fa il tuo browser? –
Sia IE che FF si comportano come previsto (tentativo di caricamento dal server indicato nel file hosts). – Nate
Hai provato 'ipconfig/flushdns'? – Aren