5

asp.net Webサービス呼び出しでスレッドカルチャを動的に初期化する方法を誰か教えてもらえますか?

私のaspxページには、InitializeCulture()メソッドをオーバーライドするベースページがあります。

選択した言語の値がセッション状態に保存されることに注意してください。

4

1 に答える 1

4

ファイルではGlobal.asax、Web サービスまたは Web ページであっても、現在のカルチャを設定できます。

// PreRequestHandlerExecute occurs after initialization of Session
void Application_PreRequestHandlerExecute(Object Sender, EventArgs e)
{
    // check if session is required for the request
    // as .css don't require session and accessing session will throw exception
    if (Context.Handler is IRequiresSessionState
        || Context.Handler is IReadOnlySessionState)
    {
        string culture = "en-US";
        if (Session["MyCurrentCulutre"] != null)
        {
            culture = Session["MyCurrentCulutre"] as String;
        }

        System.Threading.Thread.CurrentThread.CurrentCulture = 
           System.Globalization.CultureInfo.CreateSpecificCulture(culture);
    }
}

要件を変更していますが、Sessionオブジェクトはメソッドで使用Begin_Requestできません。Web メソッドでこれを行うことができます。

[WebMethod]
public static string MyWebMethod()
{
    String culture = Session["MyCurrentCulutre"] as String;

    System.Threading.Thread.CurrentThread.CurrentCulture = 
       System.Globalization.CultureInfo.CreateSpecificCulture(culture);

    return "My results";
}
于 2011-10-25T17:16:32.723 に答える