在 CastleMVC 应用程序的控制器操作中,如何获取用户的 IP 地址?
我认为在 asp.net mvc 中它会是Request.ServerVariables["REMOTE_ADDR"]
,但我在 Castle 中找不到等价物。
(我知道潜在的代理问题等,请求中报告的地址很好)
在 CastleMVC 应用程序的控制器操作中,如何获取用户的 IP 地址?
我认为在 asp.net mvc 中它会是Request.ServerVariables["REMOTE_ADDR"]
,但我在 Castle 中找不到等价物。
(我知道潜在的代理问题等,请求中报告的地址很好)
Castle Monorail 以及 ASP.NET MVC 作为 ASP.NET 运行时的优雅 MVC 皮肤。
因此,可以使用 ASP.NET 运行时完成的所有事情(除了 WebForms 特定的东西,如 ViewState)也可以使用 ASP.NET MVC 和 Monorail 来完成。
因此,您始终可以使用静态 HttpContext.Current 方法获取当前 ASP.NET 的 HttpContext。
在 Monorail 中,您还可以使用 IEngineContext 的 .UnderlyingContext 属性来访问 ASP.NET HttpContext。
具体来说,在 Monorail 中,您可以使用当前 IRequest 上的便捷属性 UserHostAddress 获取客户端报告的 IP。
例如在控制器的操作中:
var clientIP = Request.UserHostAddress;
我相信它:
HttpContext.Request.ServerVariables["REMOTE_ADDR"]