I used code below to get client ip with asp.net before but after I moved to VDS this function begin returning only my subnet mask which is 178.18.198.1 or 178.18.198.2.
Can anyone help me with this problem?
Private Function GetIPAddress() As String
Dim sIPAddress As String = Nothing
sIPAddress = Request.ServerVariables("HTTP_X_FORWARDED_FOR")
If String.IsNullOrEmpty(sIPAddress) Then
sIPAddress = Request.ServerVariables("REMOTE_ADDR")
End If
Return sIPAddress
End Function
EDIT
Found similar problem here:
Have deployed many 2008 32 bit
standard web servers using the citrix
netscaler isapi (the netscaler being a
load balancer), in all cases the
client IP address is logged in the
standard IIS logs. On a new project I
was asked to deploy 2008 R2,
configured IIS 7.5 identically with
how I configured IIS 7.0 in the past,
this time however the client ip is
returning the load balancer address in
the logs. Here is the weird part, I
installed “advanced logging” and it is
showing the client IP address
properly, so the isapi is doing its
job. Have googled this one to death
and could use some advice.
I also found ISAPI Filter module but cannot make it work: devcentral.f5.com/x_forwarded_for_log_filter_for_windows_servers
Answers:
Thank you for visiting the Q&A section on Magenaut. Please note that all the answers may not help you solve the issue immediately. So please treat them as advisements. If you found the post helpful (or not), leave a comment & I’ll get back to you as soon as possible.
Method 1
Problem solved by using HTTP_CLIENT_IP instead of REMOTE_ADDR in sourcecode files.
The problem about IIS Logs was solved by installing IIS Advanced Logging module as suggested here. Also I got error “503: Service Unavailable” after installing Advanced Logging but solved this by granting read-write permissions to Everyone for Program FilesIIS folder and started failed application pools.
Another solution suggested here is:
On the NetScaler under “load
balancing”, “Services” then under the
advanced tab, under settings, check
the box for “Use Source IP” and
“Client IP” then in the Header field
“CLIENT-IP”
Method 2
I use
IP.Text = Request.UserHostAddress;
In C#. Does that work for you?
All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0