所有!
我的网站有多个成语。我可以在任何页面中选择/更改成语。成语保存在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");
}
答案 0 :(得分:0)
我遇到了同样的问题,IE每次页面重新加载时都会丢失会话。在我的情况下,这是由于服务器具有不同步时区导致cookie在到达客户端时已经过期。似乎大多数浏览器仍然有效,而IE会在导航到下一页时销毁cookie。
答案 1 :(得分:0)