2009-01-08 11 views
7

Quando una richiesta di un utente entra, posso usare Context.Request.UserHostAddress per ottenere l'indirizzo IP dell'utente. Come posso ottenere l'indirizzo IP del sito Web/server in fase di runtime? Ho un codice di segnalazione che può essere utilizzato da più siti Web sullo stesso server e ciascun sito Web utilizza un indirizzo IP diverso. Quindi devo essere in grado di rilevare l'indirizzo IP del sito Web in fase di esecuzione.Come posso ottenere l'indirizzo IP del server/sito Web in asp.net?

risposta

6

Grazie Alex, la tua risposta mi ha messo sulla strada giusta. Ecco il codice per fare quello che sto cercando:

VB.NET:

System.Net.Dns.GetHostAddresses(Request.Url.Host)(0).ToString() 

o

System.Net.Dns.GetHostEntry(Request.Url.Host).AddressList(0).ToString() 
+1

Questo non funziona se l'host è dietro uno switch di contenuti . Cosa dovresti fare per trovare l'indirizzo IP su cui è in esecuzione il sito del server locale in IIS se sei dietro a un interruttore di contenuto? – devlord

14

System.Net.Dns.GetHostAddresses

a proposito, è necessario passare come argomento il nome dell'host, quindi forse provate questo:

System.Net.Dns.GetHostByAddress(System.Net.IPAddress.Parse(System.Web.HttpContext.Current.Request.UserHostName)).HostName; 

E se tutto il resto fallisce, fatelo alla vecchia maniera:

Response.Write(Request.ServerVariables["LOCAL_ADDR"]); 
2
 string siteName = "Your Site URL"; 
    string tempUrl = siteName.Replace("http://", "").Replace("https://", "").Trim(); 
    string[] SiteURLArr = tempUrl.Split('/'); 
    string SiteURL = SiteURLArr[0]; 
     System.Net.IPAddress[] ip = System.Net.Dns.GetHostAddresses(SiteURL); 
    Response.Write(ip[0]); 
Problemi correlati