国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

Wie erhalte ich die IP-Adresse des Clients in ASP.NET MVC?
P粉232409069
P粉232409069 2023-10-14 09:01:56
0
2
938

Ich bin v?llig neu im ASP.NET MVC-Stack und würde gerne wissen, was mit dem einfachen Page-Objekt und dem Request ServerVariables-Objekt los ist.

Grunds?tzlich m?chte ich die IP-Adresse des Client-PCs extrahieren, kann aber nicht verstehen, wie die aktuelle MVC-Struktur dies ?ndert.

Soweit ich wei?, wurden die meisten variablen Objekte durch HttpRequest-Varianten ersetzt.

Ist jemand bereit, einige Ressourcen zu teilen? In der Welt von ASP.NET MVC gibt es wirklich eine Menge zu lernen. :)

Zum Beispiel habe ich eine statische Klasse mit einer aktuellen Funktion. Wie kann ich mit ASP.NET MVC die gleichen Ergebnisse erzielen?

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;
}

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

P粉232409069
P粉232409069

Antworte allen(2)
P粉826283529

Request.ServerVariables["REMOTE_ADDR"] 應(yīng)該可以工作 - 直接在視圖中或在控制器操作方法主體中(Request 是 MVC 中 Controller 類的屬性,而不是 Page)。 p>

它正在工作..但您必須在真實的?? IIS 而不是虛擬的 IIS 上發(fā)布。

P粉903969231

簡單的答案是使用 HttpRequest.UserHostAddress 屬性。

示例:從控制器內(nèi)部:

using System;
using System.Web.Mvc;

namespace Mvc.Controllers
{
    public class HomeController : ClientController
    {
        public ActionResult Index()
        {
            string ip = Request.UserHostAddress;

            ...
        }
    }
}

示例:從輔助類中:

using System.Web;

namespace Mvc.Helpers
{
    public static class HelperClass
    {
        public static string GetIPHelper()
        {
            string ip = HttpContext.Current.Request.UserHostAddress;
            ..
        }
    }
}

但是,如果請求已由一個或多個代理服務(wù)器傳遞> 然后是 HttpRequest.UserHostAddress 返回的 IP 地址property 將是中繼請求的最后一個代理服務(wù)器的 IP 地址。

代理服務(wù)器可以使用事實上的標(biāo)準(zhǔn),將客戶端的IP地址放置在X-Forwarded-For HTTP 標(biāo)頭。除了不能保證請求具有 X-Forwarded-For 標(biāo)頭之外,也不能保證 X-Forwarded-For 未被 欺騙。


原始答案

Request.UserHostAddress

上面的代碼提供了客戶端的 IP 地址,而無需查找集合。 Request 屬性在控制器(或視圖)中可用。因此,您可以傳遞一個 Request 對象來獲得相同的結(jié)果,而不是將 Page 類傳遞給您的函數(shù):

public static string getIPAddress(HttpRequestBase request)
{
    string szRemoteAddr = request.UserHostAddress;
    string szXForwardedFor = 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;
}
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage