我在安装了 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
}
我的目标:
您可以使用 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;
}
}
}
}