首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在ASP.NET MVC中从请求中获取客户端IP地址

如何在ASP.NET MVC中从请求中获取客户端IP地址
EN

Stack Overflow用户
提问于 2020-11-06 22:44:42
回答 2查看 4.4K关注 0票数 0

我在安装了IIS8.5的web服务器上部署了一个ASP.NET MVC应用程序(使用.NET 4.5)。

我已经创建了一个自定义控制器类,其中我做了一些事情,它继承了System.Web.Mvc.Controller:

代码语言:javascript
复制
public partial class MyCustomController : System.Web.Mvc.Controller
{
    // Here my stuff
}

然后,我的所有控制器(少数控制器除外)继承自我的自定义控制器,例如:

代码语言:javascript
复制
public partial class OneController : MyCustomController
{
   // Here some stuff
}

我的目标是:

  1. 现在,我需要获得目前正在向我的ASP.NET MVC应用程序发出请求的客户端IP地址。因此,我想在我的自定义控制器MyCustomController中实现一个方法,它返回那个客户机IP。在这一点上这有可能吗?如果是的话,怎么做?
  2. 此外,我如何知道传入的请求是否来自本地IP地址(localhost) 127.0.0.1,如果是的话,放弃这个请求,我的意思是,什么也不做?
EN

回答 2

Stack Overflow用户

发布于 2020-11-10 09:17:32

您可以使用HttpRequest.ServerVariables获取ASP.NET MVC中客户端的IP地址。REMOTE_ADDR变量提供客户端的IP地址。

您可以直接对控制器页面使用下面的方法,并从视图或任何需要的地方调用它。

代码语言:javascript
复制
   public string GetIp()  
   {  
      string ip = 
      System.Web.HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];  
      if (string.IsNullOrEmpty(ip))  
      {  
        ip = System.Web.HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];  
      }  
    return ip;  
   }  

获取IP地址的第二种方法是使用ASP.NET的内置功能,这里我们使用page的Request属性,它为请求的页面获取一个HttpRequest类的对象。HttpRequest是一个密封类,它使ASP.NET能够读取客户端浏览器在Web请求期间发送的HTTP值。我们访问UserHostAddress类的HttpRequest属性来获取访问者的IP地址。

代码语言:javascript
复制
    private void GetIpAddress(out string userip)  
    {  
      userip = Request.UserHostAddress;  
      if (Request.UserHostAddress != null)  
     {  
       Int64 macinfo = new Int64();  
       string macSrc = macinfo.ToString("X");  
       if (macSrc == "0")  
       {  
        if (userip == "127.0.0.1")  
        {  
            Response.Write("visited Localhost!");  
        }  
        else  
        {  
            lblIPAdd.Text = userip;  
         }     
     }  
  }  
}  
票数 3
EN

Stack Overflow用户

发布于 2020-11-06 22:49:50

试试这个属性:

代码语言:javascript
复制
System.Web.HttpContext.Current.Request.UserHostAddress

您可以使用自己实现的ActionFilterAttribute来过滤请求。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64722540

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档