来自Session的值在IE中丢失

时间:2013-11-28 11:43:58

标签: c# asp.net .net internet-explorer session

所有!

我的网站有多个成语。我可以在任何页面中选择/更改成语。成语保存在Session中,如果我改变成语,我改变了会话值。 问题是:

如果我在Homepage中更改我的默认习惯用法并转到其他页面,则此会话值将丢失,因此,此页面未翻译。 但如果我重新加载此页面一次或多次,则翻译当前页面。 这只发生在Webserver(Pheonix - US)中。在localhost中,会话没有丢失值。

任何页面都会出现此问题,但仅限于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");
}

2 个答案:

答案 0 :(得分:0)

我遇到了同样的问题,IE每次页面重新加载时都会丢失会话。在我的情况下,这是由于服务器具有不同步时区导致cookie在到达客户端时已经过期。似乎大多数浏览器仍然有效,而IE会在导航到下一页时销毁cookie。

答案 1 :(得分:0)

这可能是浏览器设置问题。 要解决此问题,您可以查看以下链接。

Cookie blocked/not saved in IFRAME in Internet Explorer

我希望它对你有所帮助。