4

私のアプリケーションの各ユーザーは自分の国を選択します。その後、国は Cookie に保存され、後のリクエストのために保存されます。すべて問題なく動作していますが、セッションの開始時にカルチャを設定する必要があります。私は現在、web.config のカルチャを en-GB に設定し、Global.asax を使用してセッションのカルチャを en-US にオーバーライドすることで実験しています。以下のコード

protected void Session_Start(object sender, EventArgs e)
    {
        if (Globals.CountryID == 8)
        {
            Thread.CurrentThread.CurrentCulture = CultureInfo.GetCultureInfo("en-US");
            Thread.CurrentThread.CurrentUICulture = CultureInfo.GetCultureInfo("en-US");
        }
    }

次のコードでは、countryID は 8 で、カルチャは en-US に設定されています。ただし、ToString("C") が設定されているページに移動すると、GBP で表示され、カルチャは en-GB のままです。

助言がありますか?

4

2 に答える 2

8

ページリクエストを処理するスレッドは、コードと同じようにセッションを開始したスレッドであると想定しています。これは保証されていません。

Sessionカルチャを変数に保存しInitializeCulture、ページでオーバーライドを使用することをお勧めします。説明:方法:ASP.NETWebページのグローバリゼーションのカルチャとUIカルチャを設定します

于 2011-12-13T10:53:19.567 に答える
1

呼び出しごとにカルチャを設定する必要があります。Session_Startは、セッションが作成されたときにのみ発生します。したがって、あなたの文化は、最初の呼び出し時またはセッションが再作成されたときにのみ正しいものになります。

于 2011-12-13T10:53:07.583 に答える