Как динамически инициализировать Культуру в ASP.NET WebService Call? - PullRequest
5 голосов
/ 25 октября 2011

Может кто-нибудь сказать мне, как я могу динамически инициализировать культуру потоков в вызове веб-службы asp.net?

На моих страницах aspx у меня есть базовая страница, где я переопределяю метод InitializeCulture ().

Обратите внимание, что значение выбранного языка сохраняется в состоянии сеанса.

1 Ответ

4 голосов
/ 25 октября 2011

В Global.asax файле вы можете установить текущую культуру, даже если его веб-сервис или веб-страница.

// 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, вы можете сделать это в своем веб-методе.

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

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

    return "My results";
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...