如何在ASP.NET MVC中获取客户端的IP地址?

我是ASP.NET MVC堆栈的新手,我想知道简单的Page对象和Request ServerVariables对象发生了什么?


基本上,我想拉出客户端PC的IP地址,但是我无法理解当前的MVC结构如何改变了所有这些。


据我了解,大多数变量对象已被HttpRequest变体替换。


有人愿意分享一些资源吗?在ASP.NET MVC世界中确实有很多东西可以学习。:)


例如,我有一个带有当前函数的静态类。使用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;

}

以及如何从控制器页面调用此函数?


呼啦一阵风
浏览 847回答 3
3回答

手掌心

Request.ServerVariables["REMOTE_ADDR"] 应该可以工作-直接在视图中或在控制器操作方法主体中(请求是MVC中Controller类的属性,而不是Page中的属性)。它正在工作..但是您必须在真正的IIS而不是虚拟IIS上发布。
打开App,查看更多内容
随时随地看视频慕课网APP