C# 来自会话的值在IE中丢失
全部 我的网站上有很多成语。我可以在任何页面中选择/更改成语。习惯用法保存在会话中,如果更改习惯用法,则更改会话值。 问题是: 如果我更改主页中的默认习惯用法并转到其他页面,此会话值将丢失,因此,此页面不会被翻译。 但如果我重新加载这个页面一次或多次,就会转换当前页面。 这只发生在Webserver(Pheonix-US)中。在本地主机中,会话不会丢失值。 任何页面都会出现此问题,但仅在IE中。Chrome正常工作。 下面是我的主页源代码。所有页面基本上都是这个代码C# 来自会话的值在IE中丢失,c#,asp.net,.net,internet-explorer,session,C#,Asp.net,.net,Internet Explorer,Session,全部 我的网站上有很多成语。我可以在任何页面中选择/更改成语。习惯用法保存在会话中,如果更改习惯用法,则更改会话值。 问题是: 如果我更改主页中的默认习惯用法并转到其他页面,此会话值将丢失,因此,此页面不会被翻译。 但如果我重新加载这个页面一次或多次,就会转换当前页面。 这只发生在Webserver(Pheonix-US)中。在本地主机中,会话不会丢失值。 任何页面都会出现此问题,但仅在IE中。Chrome正常工作。 下面是我的主页源代码。所有页面基本上都是这个代码 protected void
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");
}
我也遇到过同样的问题,IE每次重新加载页面时都会丢失会话。在我的例子中,这是由于服务器的时区不同步导致cookie在到达客户端时已经过期。看起来大多数浏览器仍然可以工作,而IE在导航到下一页时会破坏cookies。这可能是浏览器设置问题。 要解决此问题,您可以查看以下链接
我希望它能对您有所帮助。您如何导航到其他页面,我是说使用
响应。重定向
或按钮/LinkButton的PostBackUrl
属性?我使用Botton导航。是的,可以。我在圣保罗(BR),网络服务器在Pheonix(美国),墨西哥城也有。但是,当我重新加载页面一次或多次时,为什么可以进行翻译?这意味着会话仍然有价值。这对我来说是个谜。你没有在http和https之间切换吗?没有!现在我的站点只使用HTTP。但我计划添加证书并使用https。我刚刚发现了一个事实。重新加载页面时,语言将在默认值和以前选择的值之间更改。正确的做法是仅使用会话的当前值加载页面。