你如何在Castle MVC(Monorail)中获得用户的IP地址?

时间:2010-04-26 23:34:39

标签: c# asp.net asp.net-mvc castle-monorail

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

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

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

2 个答案:

答案 0 :(得分:6)

Castle Monorail以及ASP.NET MVC在ASP.NET运行时作为优雅的MVC皮肤。

因此,可以使用ASP.NET MVC和Monorail完成ASP.NET运行时可以完成的所有操作(除了像WebState这样的WebForms特定内容)。

因此,您始终可以使用静态HttpContext.Current方法获取当前ASP.NET的HttpContext。

从Monorail,您还可以使用IEngineContext的.UnderlyingContext属性来访问ASP.NET HttpContext。

具体来说,在Monorail中,您可以使用当前IRequest上的便利属性UserHostAddress获取客户端报告的IP。

e.g。在控制者的行动中:

var clientIP = Request.UserHostAddress;

答案 1 :(得分:3)

我相信:

HttpContext.Request.ServerVariables["REMOTE_ADDR"]