ASP.NET Anfrage.ServerVariables Renditen lokale IP-Adresse remote-IP nicht

Bekam eine asp.net web-Seite in c#. Eine Sache, die wir tun möchten, ist der track trifft auf die Website einschließlich Ihrer IP-Adresse. Ich führte einige code (Dank SO), aber die geloggten IP-Adresse immer zu sein scheinen, lokal, ie: 192.168.x.x. Ich habe es versucht, aus einer Vielzahl von Geräten, sogar mein Handy und die Version MiFi, nur um sicherzugehen, dass es nicht etwas komisch mit der ISP aber die melden sich immer die gleichen 2-3 verschiedene interne ip-Adressen (scheint ein wenig ändern, als der Tag geht weiter).

Hier ist meine Funktion, die bekommt die IP (wieder Dank der postings hier SO):

protected IPAddress GetIp(HttpRequest request)
{
    string ipString;
    if (string.IsNullOrEmpty(request.ServerVariables["HTTP_X_FORWARDED_FOR"]))
        ipString = request.ServerVariables["REMOTE_ADDR"];
    else
        ipString = request.ServerVariables["HTTP_X_FORWARDED_FOR"].Split(",".ToCharArray(), StringSplitOptions.RemoveEmptyEntries).FirstOrDefault();

    IPAddress result;
    if (!IPAddress.TryParse(ipString, out result))
        result = IPAddress.None;

    return result;
}

public void logHit()
{
    IPAddress ip = GetIp(Request);
    string sIP = ip.ToString();
}

Habe ich versucht, dieses so gut, das ergibt dasselbe Ergebnis:

HttpContext.Current.Request.UserHostAddress;

Wenn ich einen Anruf auf der client-Seite mit so etwas wie der service auf appspot, es funktioniert Prima:

<script type="application/javascript">
    function getip(json) {
        //txtIP is a input box on the form
        document.getElementById("txtIP").value = json.ip;
    }
</script>

<script type="application/javascript" src="http://jsonip.appspot.com/?callback=getip"></script>

Ich nehme an, ich könnte einen Umweg, indem Sie auf diesen appspot link und analysieren Sie es aus, aber das scheint eine ganze Menge ärger für etwas, das einfach sein sollte.

Könnte es sein, den IIS auf dem server? Irgendeine Art von Umleitung geht? Die ip-Adressen protokolliert werden, NICHT der Server. Das problem ist, ich dont haben direkten Zugang zu ihm, so habe ich zu reden mit den Jungs, dass admin und möchte Ihnen ein wenig die Richtung, bevor Sie einfach anfangen, Dinge zu verändern.

Dank

Ernie

  • Sie können einen Versuch geben, um "X-Forwarded-For" - header, anstelle von (oder zusätzlich zu ) "HTTP_X_FORWARDED_FOR". Jedenfalls, wenn die app gehostet ist hinter einem reverse-proxy, könnten Sie ein Problem haben, weil nicht alle RP implementieren *X_FORWARDED_FOR richtig.
  • Ernie werfen Sie einen Blick auf diese stackoverflow-posting und versuchen die Antwort durch @algreat stackoverflow.com/questions/735350/...
  • für die Reaktion. Ich habe es ausprobiert, aber es kommt wieder null.
  • Danke für den link. Ich tatsächlich gelesen, dass vorher und habe versucht, alle der genannten Antworten. Kommen alle wieder mit den gleichen ip-Adressen. Ich habe selbst eine test-Seite, die Schleifen durch alle Einträge in ServerVariables und die DNS-AddressList und stürzt Sie auf der client-Seite in html, um zu sehen, wenn es ein anderer var, dass könnte es haben, leider nichts getan. Das einzige, was funktioniert ist die javascript. Ernie
  • Ich war nur neugierig, und habe mit meinem ISP. xeondev.weblapportal.hu/Webform1.aspx "HTTP_X_FORWARDED_FOR" unterstützt wird , werden vielleicht einige IIS-Einstellung ? ....
InformationsquelleAutor Ernie S | 2013-02-05
Schreibe einen Kommentar