gpt4 book ai didi

c# - 在 Global.asax.cs 中获取客户端 ip 地址 - 这可能吗?

转载 作者:行者123 更新时间:2023-11-30 20:01:48 25 4
gpt4 key购买 nike

当然是Request.UserHostAddress方式很棒,但是在Application_Start() Request对象还不存在。

我想首先通过他/她的 IP 猜测用户的位置 - 只需一次 - 当他/她进入网站时,并为他/她设置默认区域设置。然后我会在其他地方操纵它。

我认为Global.asax 中必须有一个事件被覆盖哪个Request存在于其中,但是我找不到该事件...

确实,任何替代技巧将不胜感激......

更新:

事实上,我正在开发一个多语言网站,我使用 MaxMind GeoIP通过 IP 获取用户所在的国家/地区。因此,我想找到一种方法,以便当用户进入网站时(仅且仅在第一次请求时)我检索他/她的国家并将其存储在 Session 或全局变量中。

我知道我可以通过 Request.UserHostAddress 在其他任何地方实现我的目标我对此没有任何问题 - 对于这个小应用程序来说,每个请求只有一行开销根本不是问题。

但是我想知道是否可以设置那个全局变量,而且只有一次...!?!

最佳答案

Application_Start() 不是正确的事件,您可以在其中执行此操作。它不会为您的用户的每个请求运行,它会执行一些基本的 asp.net 应用程序初始化。

更好的解决方案是给用户,例如

protected void Application_BeginRequest(){}

在客户端请求开始时运行。

关于最早的事件,其中请求和 session 都可用...好像是

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";
}
}
}

但是“根据 IP 设置语言环境”到底是什么意思?你能澄清一下这个任务吗?因为一般来说,对于每个请求执行,必须设置此“语言环境”信息。

关于c# - 在 Global.asax.cs 中获取客户端 ip 地址 - 这可能吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18033037/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com