ASP.NET сбросить нить культуры после использования? - PullRequest
1 голос
/ 21 сентября 2010

Если я установлю Thread Culture и UICulture для одного ASPX, после прохода для этой страницы все мои aspx, использующие один и тот же поток (не один и тот же запрос), будут иметь одинаковую культуру?

Поскольку мне нужно установитьКультура только для одного ASMX

Ответы [ 2 ]

0 голосов
/ 21 сентября 2010

Я почти уверен, что однажды установленная UICulture останется в течение всего сеанса ASP (что происходит независимо от того, какой сеанс вы создаете для своего собственного приложения).

Редактировать: здесь выглядит как простая сводка:http://quickstarts.asp.net/QuickStartv20/aspnet/doc/localization/localization.aspx

0 голосов
/ 21 сентября 2010

Если установленная вами культура не читается из настроек браузера (как будто она находится в базе данных), вам нужно устанавливать это при каждом запросе.

Как описано здесь: http://msdn.microsoft.com/en-us/library/bz9tc508.aspx

Переопределить метод 'InitializeCulture' на каждой странице. Здесь очень удобен общий базовый класс для всех ваших страниц.

Я бы предложил запустить отражатель .NET и посмотреть, что делает реализация по умолчанию. Это поможет уточнить, что происходит по умолчанию.

Поскольку это событие обрабатывается на уровне страницы, а не в Global.asax, я бы ожидал, что оно будет сброшено. также, как описано в статье, это событие вызывается так рано в жизненном цикле страницы, что для захвата пользовательского ввода требуется прямой доступ к Request.Form.

РЕДАКТИРОВАТЬ: Пожалуйста, попробуйте и посмотрите, что это должно быть установлено в каждом запросе. Дайте мне знать, если вы видите другие результаты или я неправильно понял ваш вопрос.

Default.aspx: печатает '21 .09.2010 '

<%@ Page Language="C#" %>

<%@ Import Namespace="System.Threading" %>
<%@ Import Namespace="System.Globalization" %>

<script runat="server">
protected override void InitializeCulture()
        {
            UICulture = "de-DE";
            Culture = "de-DE";
            //base.InitializeCulture();
        }   
</script>
<HTML>
<head>
</head>
<body>
<%= System.DateTime.Now.ToShortDateString()%>
</body>
</HTML>

Default2.aspx: печатает '21.09.2010' (мой стандарт по умолчанию - es-US)

<%@ Page Language="C#" %>
<HTML>
<head>
</head>
<body>
<%= System.DateTime.Now.ToShortDateString()%>
</body>
</HTML>

Порядок, в котором вы попадаете на эти страницы, не имеет значения. Результаты не меняются.

Один из подходов, который используют люди, - это сохранить эту информацию в переменной Session и использовать переменные Session для установки культуры.

...