2011-02-04 28 views
0

讓我給你一些背景。我有一個多語言網站和我的文化都存儲在數據庫中,並得到了一個屬性,它是public bool Active { get; set; }避免讓這種文化檢查每一個電話?

  1. 如果你來到我的網站可以說在你的瀏覽器中的俄羅斯文化,不支持我的網站上所以我需要將文化設置爲「se」(或其他)。

  2. 如果你來到我的網站支持的文化,但它不活動我需要將其設置爲默認的一個「se」(或其他)。

現在我可以在我的override IHttpHandler GetHttpHandler方法中檢查easy。事情是,我不想每次在網站上打電話時都打電話給數據庫。我的想法是,我做了一個會議[「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()檢查,以避免會議

回答

0

使用全局.asax.cs:

protected void Session_Start(object sender, EventArgs e) 

此方法在s首先創造激情。然後,您可以執行檢查,在會話中填寫您的語言信息,並在會話通過用戶與您的網站進行交互的情況下生效。

+0

感謝讓我在正確的軌道上,不知道爲什麼我沒有想到使用Application_Start() – 2011-02-04 06:05:28