335 Stimmen

Wie kann ich die IP-Adresse des Clients in ASP.NET MVC abrufen?

Ich bin völlig neu in der ASP.NET MVC-Stapel, und ich wunderte mich, was geschah mit der einfachen Seite Objekt und das Objekt Request ServerVariables?

Im Grunde möchte ich die IP-Adresse des Client-PCs herausziehen, aber ich verstehe nicht, wie die aktuelle MVC-Struktur all dies verändert hat.

Soweit ich das verstehen kann, die meisten der variablen Objekte wurden durch die HttpRequest-Varianten ersetzt .

Hat jemand ein paar Ressourcen zur Verfügung? Es gibt wirklich ein Meer von Sachen in der ASP.NET MVC Welt zu lernen :)

Ich habe zum Beispiel eine statische Klasse mit dieser aktuellen Funktion. Wie erhalte ich das gleiche Ergebnis mit ASP.NET MVC?

public static int getCountry(Page page)
{
    return getCountryFromIP(getIPAddress(page));
}

public static string getIPAddress(Page page)
{
    string szRemoteAddr = page.Request.ServerVariables["REMOTE_ADDR"];
    string szXForwardedFor = page.Request.ServerVariables["X_FORWARDED_FOR"];
    string szIP = "";

    if (szXForwardedFor == null)
    {
        szIP = szRemoteAddr;
    }
    else
    {
        szIP = szXForwardedFor;

        if (szIP.IndexOf(",") > 0)
        {
            string [] arIPs = szIP.Split(',');

            foreach (string item in arIPs)
            {
                if (!isPrivateIP(item))
                {
                    return item;
                }
            }
        }
    }
    return szIP;
}

Und wie rufe ich diese Funktion von der Controller-Seite aus auf?

2voto

sobelito Punkte 1445

Wie erkläre ich, dass sich meine Website hinter einer Amazon AWS Elastic Load Balancer (ELB):

public class GetPublicIp {

    /// <summary>
    /// account for possbility of ELB sheilding the public IP address
    /// </summary>
    /// <returns></returns>
    public static string Execute() {
        try {
            Console.WriteLine(string.Join("|", new List<object> {
                    HttpContext.Current.Request.UserHostAddress,
                    HttpContext.Current.Request.Headers["X-Forwarded-For"],
                    HttpContext.Current.Request.Headers["REMOTE_ADDR"]
                })
            );

            var ip = HttpContext.Current.Request.UserHostAddress;
            if (HttpContext.Current.Request.Headers["X-Forwarded-For"] != null) {
                ip = HttpContext.Current.Request.Headers["X-Forwarded-For"];
                Console.WriteLine(ip + "|X-Forwarded-For");
            }
            else if (HttpContext.Current.Request.Headers["REMOTE_ADDR"] != null) {
                ip = HttpContext.Current.Request.Headers["REMOTE_ADDR"];
                Console.WriteLine(ip + "|REMOTE_ADDR");
            }
            return ip;
        }
        catch (Exception ex) {
            Console.Error.WriteLine(ex.Message);
        }
        return null;
    }
}

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X