Если установленная вами культура не читается из настроек браузера (как будто она находится в базе данных), вам нужно устанавливать это при каждом запросе.
Как описано здесь:
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 для установки культуры.