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

Bre*_*ker 4 c# asp.net asp.net-mvc castle-monorail

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

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

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

Ken*_*ozi 6

Castle Monorail以及ASP.NET MVC作为ASP.NET运行时的优雅MVC外观.

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

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

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

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

例如在控制器的动作中:

var clientIP = Request.UserHostAddress;
Run Code Online (Sandbox Code Playgroud)