2017-09-05 16 views
0

私はHttpContextを使用してクライアントIPを取得する静的メソッドを持っています。ログイン時にクライアントIPを取得する

public static string GetClientMachineIPAddress() 
    { 
     string strClientIP = string.Empty; 

     if (HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"] != null ||!string.IsNullOrEmpty(HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"])) 
     { 
      strClientIP = HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"]; 
     } 
     if (strClientIP == string.Empty) 
     { 
      strClientIP = HttpContext.Current.Request.UserHostAddress; 
     } 
     return strClientIP; 
    } 

これは、ユーザーが既にログインしている時に正常に動作しますが、私は、セッションが確立される前にnullのHttpContext.Currentので、ログイン時のIPを取得しようとした場合は動作しません。

ご了承ください。

答えて

0

以下の方法は、私がIPアドレスを取得する方法です。 HttpContext.Currentは、セッションがなくても空であってはいけません。私は他の何かがエラーを引き起こしていると思う。

string ipaddress; 
ipaddress = HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"]; 
if (ipaddress == "" || ipaddress == null) 
    ipaddress = HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"]; 
return ipaddress; 
関連する問題