HOWTO:从ASP.NET MVC

问题描述

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

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

public partial class MyCustomController : System.Web.Mvc.Controller
{
    // Here my stuff
}

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

public partial class OneController : MyCustomController
{
   // Here some stuff
}

我的目标:

  1. 现在,我需要获取当前使 请求到我的ASP.NET MVC应用程序。所以我想实施 我的自定义控制器MyCustomController中的方法 返回该客户端IP。在这一点上可能吗?如果可以,怎么办?
  2. 此外,我怎么知道传入的请求是否来自本地IP地址(本地主机)127.0.0.1,如果是,则丢弃此请求,我什么都不做?

解决方法

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

您可以直接在控制器页面上使用以下方法,并在视图中或需要的地方调用它

   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值。我们访问HttpRequest类的UserHostAddress属性以获取访问者的IP地址。

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

尝试此属性:

System.Web.HttpContext.Current.Request.UserHostAddress

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

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...