在CastleMVC应用程序的控制器操作中,如何获取用户的IP地址?
我认为在asp.net mvc中它会是Request.ServerVariables["REMOTE_ADDR"]
,但我找不到Castle中的等价物。
(我知道潜在的代理问题等,请求中报告的地址很好)
答案 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"]