Позвольте мне рассказать вам о моем сценарии. У меня есть мультиязычный сайт, и мои культуры хранятся в базе данных, и у меня есть свойство public bool Active { get; set; }
Если вы заходите на мой сайт с, скажем, русской культурой в вашем браузере, это не поддерживается на моем сайте, поэтому мне нужно установить для этой культуры "se" (или что-то еще).
Если вы заходите на мой сайт с поддерживаемой культурой, но он не активен, мне нужно установить значение по умолчанию "se" (или что-то еще).
Теперь я могу легко выполнить эту проверку в моем методе override IHttpHandler GetHttpHandler
. Дело в том, что я не хочу звонить в базу данных каждый раз, когда сайт делает какие-либо звонки на сайте. Я думаю, что я делаю сессию ["firstVisit"], чтобы уменьшить эту проверку, но я вроде не знаю, как мне это сделать, потому что мой сценарий говорит, что
not set to an instance of an object
в строке сеанса ["firstVisit"], поэтому мой вопрос, как мне справиться с этим? И какие еще есть варианты?
моя мысль примерно такая
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()
, чтобы избежать сеансов