在ASP.NET MVC中获取用户IP

时间:2013-09-25 08:00:17

标签: asp.net-mvc

我正在尝试在MVC应用程序中获取请求的IP。

这是我的代码

 string srUserIp = "";

 srUserIp = Request.ServerVariables["HTTP_X_FORWARDED_FOR"].ToString();

 if (string.IsNullOrEmpty(srUserIp))
 {
   srUserIp = Request.ServerVariables["REMOTE_ADDR"].ToString();
 }

这是控制器中的方法。当命中Request.ServerVariables的第一行时,这会抛出“对象引用未设置为实例”错误。

如何在控制器方法中获取HttpContext对象,以便我可以获取所请求用户的IP而不是托管应用程序的服务器IP?

问候。

1 个答案:

答案 0 :(得分:2)

如果HTTP_X_FORWARDED_FOR服务器变量为null,则对其执行.ToString()将使对象引用未设置。

srUserIp = Request.ServerVariables["HTTP_X_FORWARDED_FOR"];

if (string.IsNullOrEmpty(srUserIp))
{
    srUserIp = Request.ServerVariables["REMOTE_ADDR"];
}

正如其中一条评论所述,servervariables返回一个字符串,因此根本不需要.ToString()