2014-02-10 130 views
0

使用以下代碼。登錄系統的IP地址

protected string GetUserIP() 
{ 
    string strUserIP = string.Empty; 
    if (HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"] != null) 
    { 
     strUserIP = HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"].ToString(); 
    } 
    else if (HttpContext.Current.Request.UserHostAddress.Length != 0) 
    { 
     strUserIP = HttpContext.Current.Request.UserHostAddress; 
    } 
    return strUserIP; 
} 

我得到的名稱IP地址一樣的格式::1

如何獲取系統的正確IP地址。

回答

1

這是localhost::1如果您使用的網絡服務器上,你會得到正確的。

雖然它取決於用戶訪問應用程序的網絡配置。

可能有firewall它不公開客戶端系統的實際IP。

0

爲了得到Ip地址使用下面的代碼

string IPAddress = GetIPAddress(); 
    public string GetIPAddress() 
    { 

     IPHostEntry Host = default(IPHostEntry); 
     string Hostname = null; 
     Hostname = System.Environment.MachineName; 
     Host = Dns.GetHostEntry(Hostname); 
     foreach (IPAddress IP in Host.AddressList) { 
      if (IP.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork) { 
       IPAddress = Convert.ToString(IP); 
      } 
     } 
     return IPAddress; 

    } 

Source

+0

爲什麼downvotes? –

+0

這將返回服務器的IP地址,而不是客戶端的IP地址。 –

+0

@SimonWhitehead這將返回超出代理的IP,即客戶端機器IP將返回.. !!我檢查了它..!並且已經在實時項目中實施了。它工作正常 –

1

方法獲取IP地址:ASP.NET,C#

using System; 
using System.Web; 

namespace WebApplication1 
{ 
    public class Global : HttpApplication 
    { 
     protected void Application_BeginRequest(object sender, EventArgs e) 
     { 
     // Get request. 
     HttpRequest request = base.Request; 

     // Get UserHostAddress property. 
     string address = request.UserHostAddress; 

     // Write to response. 
     base.Response.Write(address); 

     // Done. 
     base.CompleteRequest(); 
     } 
    } 
} 
0

客戶端IP可以請求讀取:

context.Request.ServerVariables["REMOTE_HOST"] 

這裏是獲得的不僅僅是客戶端IP地址的詳細代碼:

string browserInfo = 
      "RemoteUser=" + context.Request.ServerVariables["REMOTE_USER"] + ";\n" 
      + "RemoteHost=" + context.Request.ServerVariables["REMOTE_HOST"] + ";\n" 
      + "Type=" + context.Request.Browser.Type + ";\n" 
      + "Name=" + context.Request.Browser.Browser + ";\n" 
      + "Version=" + context.Request.Browser.Version + ";\n" 
      + "MajorVersion=" + context.Request.Browser.MajorVersion + ";\n" 
      + "MinorVersion=" + context.Request.Browser.MinorVersion + ";\n" 
      + "Platform=" + context.Request.Browser.Platform + ";\n" 
      + "SupportsCookies=" + context.Request.Browser.Cookies + ";\n" 
      + "SupportsJavaScript=" + context.Request.Browser.EcmaScriptVersion.ToString() + ";\n" 
      + "SupportsActiveXControls=" + context.Request.Browser.ActiveXControls + ";\n" 
      + "SupportsJavaScriptVersion=" + context.Request.Browser["JavaScriptVersion"] + "\n"; 

(或)

string IPAddress = string.Empty; 
string SearchName = string.Empty; 

String strHostName = HttpContext.Current.Request.UserHostAddress.ToString(); 

IPAddress = System.Net.Dns.GetHostAddresses(strHostName).GetValue(0).ToString(); 

ServerVariables

0

您可以通過下面的方式找到IP地址。它適用於我:) 如果你只想要一個IP,那麼從列表中選擇第一個IP。

var Dnshost = Dns.GetHostEntry(Dns.GetHostName()); 

string ipAddress = ""; 

IPAddress[] ipAddress = Dnshost.AddressList; 
ipAddress = ipAddress[0].ToString(); 

這裏「ipAddress [0]」會給你係統的當前IP。如果你想獲得再迭代AddressList中,如下圖所示所有IP的:

foreach (var ip in Dnshost.AddressList) 
{ 
      if (ip.AddressFamily == AddressFamily.InterNetwork) 
      { 
       ipAddress = ip.ToString(); 
      } 
} 

注:它會給你的IPv4地址中的「AddressFamily.InterNetwork」的情況下,如果你需要的IPv6地址,你會使用「AddressFamily.InterNetworkV6」。

希望它對您有所幫助。

0

:: 1是IPv6本地主機地址,你可以找到更多信息here