我正在尝试在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?
问候。
答案 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()