2013-11-28 43 views
1

全部!會話中的值在IE中丟失

我的網站有多個成語。我可以在任何頁面選擇/更改成語。成語保存在Session中,如果我改變習語,我改變了會話價值。 問題是:

如果我在主頁中更改默認成語並轉到其他頁面,則會話值丟失,因此此頁面未翻譯。 但是,如果我重新加載此頁面一次或多次,翻譯當前頁面。 這隻發生在Web服務器(Pheonix - 美國)。在本地主機中,會話不會丟失值。

此問題發生在任何頁面上,但僅在IE中。 Chrome正常工作。

下面,我的源代碼到主頁。對所有頁面來說基本上就是這個代碼

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (!IsPostBack) 
    { 
     //to set default session value. (first time). 
     if (Session["idioma"] == null) 
     { 
      string idioma = CultureInfo.CurrentCulture.TwoLetterISOLanguageName.ToString(); 
      Idioma.MudaCultura(idioma); 
      Session["idioma"] = idioma; 
     } 

     //if I've other session value (Change Idiom). 
     else if (Session["idioma"] != null) 
     { 
      string idioma = Session["idioma"].ToString(); 
      Idioma.MudaCultura(idioma); 
     } 

     lblWelcome.Text = Idioma.RetornaMensagem("welcome"); 
     btnRequestAccess.Text = Idioma.RetornaMensagem("btnRequestAccess"); 
     btnTickets.Text = Idioma.RetornaMensagem("btnTickets"); 
     btnManager.Text = Idioma.RetornaMensagem("btnManager"); 
     btnManageFolders.Text = Idioma.RetornaMensagem("btnManageFolders"); 


     IdiomaList.Items.Add("PORTUGUÊS"); 
     IdiomaList.Items.Add("ENGLISH"); 
     IdiomaList.Items.Add("ESPAÑOL"); 

     //Set value that show in DropDown list according to Session value. 

     if (Session["idioma"].ToString() == "pt") 
     { 
      IdiomaList.SelectedValue = "PORTUGUÊS"; 
     } 

     else if (Session["idioma"].ToString() == "en") 
     { 
      IdiomaList.SelectedValue = "ENGLISH"; 
     } 

     else if (Session["idioma"].ToString() == "es") 
     { 
      IdiomaList.SelectedValue = "ESPAÑOL"; 
     } 

    } 
} 

protected void Idioma_OnChange(object sender, EventArgs e) 
{ 
    if (IdiomaList.SelectedValue == "PORTUGUÊS") 
    { 
     Idioma.MudaCultura("pt"); 
     Session["idioma"] = "pt"; 
    } 

    else if (IdiomaList.SelectedValue == "ENGLISH") 
    { 
     Idioma.MudaCultura("en"); 
     Session["idioma"] = "en"; 
    } 

    else if (IdiomaList.SelectedValue == "ESPAÑOL") 
    { 
     Idioma.MudaCultura("es"); 
     Session["idioma"] = "es"; 
    } 

    lblWelcome.Text = Idioma.RetornaMensagem("welcome"); 
    btnRequestAccess.Text = Idioma.RetornaMensagem("btnRequestAccess"); 
    btnTickets.Text = Idioma.RetornaMensagem("btnTickets"); 
    btnManager.Text = Idioma.RetornaMensagem("btnManager"); 
    btnManageFolders.Text = Idioma.RetornaMensagem("btnManageFolders"); 
} 
+0

如何導航到其他頁面,我的意思是使用'Response.Redirect'或Button/LinkBut​​ton的'PostBackUrl'屬性? – SoftSan

+0

我使用Botton進行導航。 – CaioVJesus89

回答

0

我遇到了同樣的問題,IE每次頁面重新加載時都會丟失會話。在我的情況下,這是由於服務器有一個不同步的時區導致cookie在到達客戶端時已經過期。看起來大多數瀏覽器仍然工作,而IE瀏覽器會在瀏覽下一頁時破壞cookie。

+0

是的,可以。我在聖保羅(BR),網絡服務器位於美國的Pheonix,它也在墨西哥城發生。但是,爲什麼當我重新加載頁面一次或多次時可以翻譯?這意味着會議仍然有價值。這對我來說是一種莫大的感覺。 – CaioVJesus89

+0

你有沒有機會在http和https之間切換? –

+0

不!現在我的網站只使用HTTP。但有計劃添加證書並使用https。 – CaioVJesus89