0

我正在尝试在 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?

问候。

4

1 回答 1

2

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

srUserIp = Request.ServerVariables["HTTP_X_FORWARDED_FOR"];

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

正如评论之一中指出的那样 servervariables 返回一个字符串,所以根本不需要做.ToString()a

于 2013-09-25T08:04:26.217 回答