Quando si recuperano URL tramite HttpWebRequest, posso vedere l'indirizzo IP del server di destinazione?
-
21-09-2019 - |
Domanda
Supponiamo che io sto il recupero di un URL nel seguente modo:
string url = "http://www.somesite.com/somepage.html"
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
HttpWebResponse resp = (HttpWebResponse)req.GetResponse();
C'è un modo per vedere l'indirizzo IP del URL di destinazione? C'è bisogno di una chiamata separata?
Grazie
Soluzione
Guardate la classe System.Net.Dns. È possibile ottenere un elenco di indirizzi IP del host dal Dns.GetHostEntry () metodo .
Altri suggerimenti
Anche se Dns.GetHostEntry()
si può ottenere l'IP del server, nel caso in cui ci sono più record A per lo stesso host, avrai tutti (noto anche come round-robin DNS). Tuttavia, quando in realtà la connessione a un server web, client sceglie una di quelle IP.
Non sembra essere un modo esposti a scoprire esattamente quali IP è stato utilizzato durante la connessione. Ho trovato queste informazioni mentre si lavora sulla nostra soluzione di monitoraggio web all'indirizzo www.justwentdown.com . Questa informazione si trova in un campo privato della risposta Web,
myHttpWebResponse.ResponseStream.Connection.ServerAddress
Tuttavia, poiché Connection
e ServerAddress
sono proprietà interne / privati, è necessario utilizzare la reflection per ottenere i valori. Ho trovato questa soluzione per essere molto utile in quelle situazioni.
Ho provato con .NET 4.0. E 'un po' disordinato e può rompere con le versioni future di .NET, quindi consiglierei l'aggiunta di un test di unità.