让我介绍一下我的情景背景。我有一个多语言网站,我的文化存储在数据库中,并获得了public bool Active { get; set; }
如果你来到我的网站,让我们在你的浏览器上说俄罗斯文化,我的网站不支持,所以我需要将文化设置为“se”(或其他)。
如果您使用受支持的文化来到我的网站,但它不是活动的,我需要将其设置为默认的“se”(或其他)。
现在,我可以使用override IHttpHandler GetHttpHandler
方法轻松完成此检查。问题是,每当网站在网站上进行任何调用时,我都不想调用数据库。我的想法是我做了一个会话[“firstVisit”]以减少那个检查,但我有点不知道我应该怎么做,因为我的情景它说
会话[“firstVisit”]行上的 not set to an instance of an object
,所以我的问题是如何处理?还有什么其他的选择呢?
我的想法是这样的
protected override IHttpHandler GetHttpHandler(System.Web.Routing.RequestContext requestContext)
{
String culture = requestContext.RouteData.Values["culture"].ToString();
if (HttpContext.Current.Session["firstVisit"].ToString() == string.Empty)
{
//do the check
}
var ci = new CultureInfo(culture);
Thread.CurrentThread.CurrentUICulture = ci;
Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(ci.Name);
return base.GetHttpHandler(requestContext);
}
编辑
为什么我没有想到这一点,我最后只是在protected void Application_Start()
进行检查以避免会话
答案 0 :(得分:0)
使用global.asax.cs:
protected void Session_Start( object sender, EventArgs e )
首次创建会话时会调用此方法。然后,您可以进行检查,在会话中填写您的语言信息,并在会话通过用户与您的网站进行互动时生效。