📅  最后修改于: 2023-12-03 15:09:14.401000             🧑  作者: Mango
在一个 ASP.NET MVC 应用程序中,您可能需要获取客户端的 IP 地址。有许多方法可以获取 IP 地址,取决于您的需要。
您可以使用内置的 Request
对象来获取客户端的 IP 地址。下面的代码演示如何使用 Request.UserHostAddress
属性来获取 IP 地址:
string ipAddress = Request.UserHostAddress;
这种方法非常简单,但它可能无法获取实际的 IP 地址。例如,如果客户端使用代理服务器,则您将获得代理服务器的 IP 地址而不是客户端的 IP 地址。
另一种获取 IP 地址的方法是使用 HttpContext.Current.Request.ServerVariables
集合。下面的代码演示如何使用 "REMOTE_ADDR" 服务器变量来获取 IP 地址:
string ipAddress = HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];
这种方法比使用 Request.UserHostAddress
更可靠,因为它不会返回代理服务器的 IP 地址。但是,它仍然无法处理使用代理服务器的客户端。
如果您的应用程序在反向代理或负载均衡环境中运行,则可以使用 X-Forwarded-For 标头来获取客户端的原始 IP 地址。下面的代码演示如何获取 X-Forwarded-For 标头:
string ipAddress = HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
请注意,X-Forwarded-For 标头可以包含多个 IP 地址,因为客户端可能通过多个代理服务器路由到您的应用程序。
以上是三种常见的获取 IP 地址的方法。选择哪种方法取决于您的实际需求。如果您的应用程序没有在代理服务器后面运行,那么使用 Request.UserHostAddress
是最简单的方法。如果您需要更可靠的方法,则可以使用 HttpContext.Current.Request.ServerVariables
或 X-Forwarded-For 标头。