Ami*_*aqi 2 c# ip global-asax asp.net-mvc-4
当然,这Request.UserHostAddress办法是伟大的,但在Application_Start()该Request对象还不存在。
我想先通过用户的IP猜测用户的位置-一次-当他/她进入网站时,并为其设置默认语言环境。然后,我将在其他地方进行操作。
我认为,必须有被否决的事件Global.asax,其Request存在于它,但是我无法找到该事件...
确实,任何其他技巧都将受到赞赏...
更新:
实际上,我正在开发一个多语言的网站,并MaxMind GeoIP用来通过其IP获取用户所在的国家。因此,我想找到一种方法,以便当用户进入网站时(仅也是第一个请求),我检索他/她的国家/地区并将其存储在Session或全局变量中。
我知道我可以在其他任何地方实现我的目标,Request.UserHostAddress而且我也没有任何问题-对于这个小型应用程序,每个请求的一行开销根本不是问题。
但是我想知道是否有可能只设置一次全局变量...!?!
Application_Start()不是正确的事件,您可以在其中执行此操作。它不会针对用户的每个请求运行,它会对asp.net应用程序进行一些基本初始化。
例如,更好的解决方案是针对用户
protected void Application_BeginRequest(){}
Run Code Online (Sandbox Code Playgroud)
在客户端请求开始时运行。
关于最早的事件,请求和会话都将可用。
void Application_AcquireRequestState(object sender, EventArgs e)
{
if (System.Web.HttpContext.Current.Session != null)
{
if (Session["locale"] != null)
{
//already set variable.
}
else
{
//set some variable
Session["locale"] = "code";
}
}
}
Run Code Online (Sandbox Code Playgroud)
但是,“基于IP设置语言环境”到底对您意味着什么呢?你能澄清这个任务吗?因为通常,对于每个请求执行,都必须设置此“区域设置”信息。