【问题标题】:how to get user IP address in mvc [duplicate]如何在mvc中获取用户IP地址[重复]
【发布时间】:2014-06-13 16:04:43
【问题描述】:

我正在使用 Mvc4, 我想获取正在使用我的网站的用户 IP 地址。 Based on this link 我可以获取用户主机地址,但我想获取确切的用户 IP 地址

【问题讨论】:

    标签: asp.net-mvc-4


    【解决方案1】:

    取决于你所在的地方。

    控制器:

    ControllerContext.HttpContext.Request.UserHostAddress;
    

    剃刀视图:

    @Request.UserHostAddress
    

    型号:

    不要使用 System.Web.HttpContext,因为它很难进行单元测试,如果不是不可能的话。相反,通过您的控制器传递值。

    HTML 助手:

    public static MvcHtmlString Ip(this HtmlHelper html)
    {
        string html = html.ViewContext.RequestContext.HttpContext.Request.UserHostAddress;
        return MvcHtmlString.Create(html);
    }
    

    请记住,由于示例的简单性,我没有进行任何空值检查。

    【讨论】:

    • 我将我的网站托管在服务器中,通过使用此代码,我只能获取该服务器的 IP 地址。但我想要用户 ip 地址
    • 这在 ASP.NET 5 [Core 1.0 (vnext)] 中不再适用 :(
    • @ppumkin 感谢您的提醒。此外,我必须评论我自己的答案,即 System.Web.HttpContext 实际上很容易使用 VS Premium 及更高版本附带的 Microsoft Fakes 进行测试。但我不会改变我的答案,因为我仍然认为远离它是相关的。尤其是 vNext,它正在切断与 System.Web 的联系。
    【解决方案2】:

    尝试使用以下代码

     System.Web.HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];
    

    【讨论】:

    • 嗨@Neel 我已经使用了上面提到的代码,但我得到的是空文本......你以前遇到过这个吗?有什么帮助吗?
    • 我得检查一下
    猜你喜欢
    • 1970-01-01
    • 2017-10-15
    • 1970-01-01
    • 2015-05-27
    • 2011-02-04
    • 2011-10-06
    • 2010-10-25
    • 2013-12-30
    • 2011-06-02
    相关资源
    最近更新 更多