【问题标题】:How to get client IP address in MVC 4 controller?如何在 MVC 4 控制器中获取客户端 IP 地址?
【发布时间】:2014-05-04 23:16:06
【问题描述】:

我试图在控制器中获取客户端 IP 地址。它正在工作,但有时我会收到此错误:

The underlying connection was closed: An unexpected error occurred on a receive


        String IP = "";

        using (WebResponse response = request.GetResponse())
        {
            using (StreamReader stream = new StreamReader(response.GetResponseStream()))
            {
                IP = stream.ReadToEnd();
            }
        }

        int first = IP.IndexOf("Address: ") + 9;
        int last = IP.LastIndexOf("</body>");
        IP = IP.Substring(first, last - first);

获取客户端IP地址有什么不同的方法吗?

【问题讨论】:

标签: c# asp.net-mvc-4


【解决方案1】:
【解决方案2】:

这些都应该可以工作,从你的Controller:

方法一:

string userIpAddress = this.Request.ServerVariables["REMOTE_ADDR"];

方法二:

string userIpAddress = this.Request.UserHostAddress;

【讨论】:

  • 我尝试了方法1和方法2,但结果IP:127.0.0.1我不想要本地IP。我需要外部IP地址
  • 如果您在 localhost 上进行测试,您将收到回送地址。如果您收到不是来自本地机器的请求,它应该会按预期工作。
  • 是的,你是对的。我在托管上测试过它是有效的。谢谢兄弟
  • 这些代码sn-ps是在控制器的动作中使用的,所以这里指的是控制器。
【解决方案3】:

以下代码行帮助了我:

string ip = System.Web.HttpContext.Current.Request.UserHostAddress;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-02-04
    • 2017-10-15
    • 2012-03-14
    • 2012-02-16
    • 2013-05-01
    • 2017-07-06
    • 2016-10-05
    • 2020-10-18
    相关资源
    最近更新 更多