2013-11-28 39 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