2009-01-08 4 views
7

Lorsqu'une requête d'utilisateur arrive, je peux utiliser Context.Request.UserHostAddress pour obtenir l'adresse IP de l'utilisateur. Comment puis-je obtenir l'adresse IP du site/serveur lors de l'exécution? J'ai un code de rapport qui peut être utilisé par plusieurs sites Web sur le même serveur et chaque site Web utilise une adresse IP différente. J'ai donc besoin de pouvoir détecter l'adresse IP du site lors de l'exécution.Comment puis-je obtenir l'adresse IP du serveur/site Web dans asp.net?

Répondre

6

Merci Alex, votre réponse m'a mis sur la bonne voie. Voici le code pour faire ce que je cherche:

VB.NET:

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

ou

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

Cela ne fonctionne pas si votre hôte se trouve derrière un commutateur de contenu . Que devez-vous faire pour trouver l'adresse IP sur laquelle le site du serveur local s'exécute dans IIS si vous êtes derrière un changement de contenu? – devlord

14

System.Net.Dns.GetHostAddresses

par le chemin, vous devez passer comme argument le nom de l'hôte, donc peut-être essayer ceci:

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

Et si tout le reste échoue, il suffit de le faire à l'ancienne façon:

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]); 
Questions connexes