protected void Application_AcquireRequestState(object sender, EventArgs e) { var url = Request.Url.AbsoluteUri.ToLower(); var files = new[] { ".axd", ".asmx", "/upload/", "/content/", ".ashx", ".css", ".js", ".png", ".gif", ".jpg", ".jpeg", ".bmp", ".swf", ".xml" }; var currentfile = Array.Find(files, element => url.IndexOf(element, StringComparison.Ordinal) > -1); if (!string.IsNullOrEmpty(currentfile)) { return; } if (HttpContext.Current.Session == null) { return; } var customTheme = (HttpContext.Current.Request["theme"] ?? string.Empty).Trim(); if (!string.IsNullOrEmpty(customTheme) && customTheme != "default") { Session.Remove("CustomTheme"); Session.Add("CustomTheme", customTheme); WebUtils.ChangeTheme(customTheme); } //set lang start var referer = HttpContext.Current.Request.ServerVariables["HTTP_REFERER"]; if (string.IsNullOrEmpty(referer)) { DataCache.RemoveCache("CategoriesInfoCache"); Session["CurrentLanguage"] = null; } var defaultlang = WebUtils.Configinfo.DefaultLang; var currentlang = (Session["CurrentLanguage"] != null ? Session["CurrentLanguage"].ToString() : defaultlang).ToLower(); var lang = currentlang == "" ? defaultlang : currentlang; if (!url.Contains("/admin/") || url.Contains("u/admin")) { lang = Array.Find(WebUtils.Langs, element => url.IndexOf(element, StringComparison.Ordinal) > -1); lang = string.IsNullOrWhiteSpace(lang) ? defaultlang : lang.Trim('/'); } var ci = (CultureInfo)Session["CurrentLanguage"]; if (ci == null || lang != currentlang || string.IsNullOrEmpty(referer)) { ci = new CultureInfo(lang == "zh-cn" ? "" : lang); Session["CurrentLanguage"] = ci; if (Session["CustomTheme"] == null) { WebUtils.ChangeThemeViaLang(lang); } } //set lang end if (customTheme == "default") { Session.Remove("CustomTheme"); WebUtils.ChangeThemeViaLang(lang); } var currentThemeFolder = string.Empty; var rve = (BlogViewEngine)ViewEngines.Engines.FirstOrDefault(a => a.GetType() == typeof(BlogViewEngine)); if (rve != null && rve.PartialViewLocationFormats != null && rve.PartialViewLocationFormats.Any()) { currentThemeFolder = rve.PartialViewLocationFormats[0].StartsWith("~/Views/") ? "" : rve.PartialViewLocationFormats[0].Split('/')[2]; } if (Session["CustomTheme"] != null) { if (currentThemeFolder != Session["CustomTheme"].ToString()) { WebUtils.ChangeTheme(Session["CustomTheme"].ToString()); } } else { var theme = WebUtils.GetLangTemplate(lang); if (currentThemeFolder != theme) { WebUtils.ChangeTheme(theme); } } Thread.CurrentThread.CurrentUICulture = ci; Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(ci.Name); }