私は、言語設定(英語、フランス語)を含む1つのドロップダウンボックスでasp.net Webアプリケーションを持っています。私はフランス語を選択すると、私は次のようにクッキーを書く -asp.netクッキーが上書きされています
protected void ddChoice_SelectedIndexChanged(object sender, EventArgs e)
{
HttpCookie cookie = new HttpCookie("pref");
cookie.Value = ddChoice.SelectedValue;
cookie.Expires = DateTime.Now.AddYears(1);
Response.SetCookie(cookie);
Thread.CurrentThread.CurrentCulture = new CultureInfo(ddChoice.SelectedValue);
Thread.CurrentThread.CurrentUICulture = new CultureInfo(ddChoice.SelectedValue);
Server.Transfer(Request.Path);
}
と、次のようにリクエストを開始し、このクッキーを読んで -
protected void Application_BeginRequest(object sender, EventArgs e)
{
string lang = string.Empty;//default to the invariant culture
HttpCookie cookie = Request.Cookies["pref"];
if (cookie != null && cookie.Value != null && !string.IsNullOrEmpty(cookie.Value.Trim()))
lang = cookie.Value;
if (string.IsNullOrEmpty(lang))
lang = "en-US";
Thread.CurrentThread.CurrentUICulture = CultureInfo.GetCultureInfo(lang);
Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(lang);
}
この時間は、私は、ブラウザのクッキーをオンにした場合、それが当然FR-「に設定されていますFR "である。しかしその後、私がホームページに行ってこのページをリフレッシュすると、クッキーは空白に設定されます。
どこが上書きされているのかわかりません。どんな助け?
いいえ。テストケースは - 1.ホームページに行く - デフォルト言語(英語)、2.言語を変更する - それが変更される、3.ホームページに行く - 選択された言語(フランス語)で正しくする、4.ヒットF5 - しかし、英語にリセットされます。 – Codie
なぜ 'Server.Transfer(Request.Path)'がありますか? – IvanH
クライアントに更新された応答を送信するには – Codie