4

在 CastleMVC 应用程序的控制器操作中,如何获取用户的 IP 地址?

认为在 asp.net mvc 中它会是Request.ServerVariables["REMOTE_ADDR"],但我在 Castle 中找不到等价物。

(我知道潜在的代理问题等,请求中报告的地址很好)

4

2 回答 2

6

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;
于 2010-04-27T05:54:57.790 回答
3

我相信它:

HttpContext.Request.ServerVariables["REMOTE_ADDR"]
于 2010-04-27T00:11:13.740 回答