У меня есть страница ASP.NET, которая выглядит следующим образом:
<%@ Page Language="vb" AutoEventWireup="false" CodeBehind="Default.aspx.vb" Inherits="culturetest4webapp._Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>CultureTest</title>
</head>
<body>
<form id="form1" runat="server">
<asp:ScriptManager ID="ScriptManager1" EnableScriptGlobalization="true" runat="server" />
<div>
<button type="button" onclick="buttonClicked();">Test</button>
</div>
<script type="text/javascript">
function buttonClicked() {
var cultureName = Sys.CultureInfo.CurrentCulture.name;
alert(cultureName);
}
</script>
</form>
</body>
</html>
В моем файле Web.config я использую следующие параметры глобализации:
<globalization culture="auto" uiCulture="auto"/>
Я использую Visual Studio 2008 с пакетом обновления 1 (SP1), работающий на английском языке Windows 7 x64 с установленным Internet Explorer 8. Региональные настройки моей ОС - датские (da-DK).
Мой предпочтительный язык в Internet Explorer установлен на «French (France)» = «fr-FR» - просто чтобы убедиться, что он отличается от моей культуры da-DK OS и культуры en-US по умолчанию, используемой в Microsoft Ajax .
Проблема заключается в том, что при запуске этого приложения из Visual Studio 2008 на странице первоначально будет использоваться культура da-DK (OS), а не - как и ожидалось - fr-FR.
Если я обновлю (F5) страницу (все еще используя тот же экземпляр браузера, который был запущен из Visual Studio), я получу правильную культуру fr-FR.
Если в окне обозревателя решений щелкнуть правой кнопкой мыши свою страницу Default.aspx, выбрать «Обзор с помощью ...» и выбрать Internet Explorer (8), я получу те же результаты: неправильно с первого раза, но верно после обновления Но если я использую диалоговое окно «Обзор с ...» и выбираю Firefox og Chrome, то при первом просмотре страницы используется правильная культура.
Если я вставлю URL-адрес в новый экземпляр Internet Explorer 8 (не запускаемый из Visual Studio), на странице также будет использоваться правильный язык при первом просмотре без необходимости его обновления.
Если я переключу свой браузер по умолчанию на Firefox или Chrome, я также получу правильную культуру при первом запуске приложения.
Я пробовал все вышеперечисленное в Visual Studio 2010, ориентируясь на .NET Framework 3.5, а также 4.0, с теми же результатами: работа Firefox и Chrome. Internet Explorer 8 этого не делает.
Я также попробовал подобную конфигурацию разработки, но с Internet Explorer 9 вместо Internet Explorer 8, и могло бы показаться, что Internet Explorer 9 работает правильно (как Firefox и Chrome).
Эта проблема, по-видимому, связана с настройкой культуры "auto". Если я установлю культуру на фиксированное значение, например, «de-DE», он работает правильно при первом просмотре при запуске из Visual Studio с помощью Internet Explorer 8.
Хотя это похоже на то, что он изолирован от Internet Explorer 8 и происходит только при запуске приложения из Visual Studio (либо из меню «Отладка», либо из диалогового окна «Обзор с ...») и не влияет на конечный результат. пользователь, я все еще хотел бы знать, в чем проблема и есть ли обходной путь для этого, поскольку VS2008 / VS2010 в сочетании с Internet Explorer 8 (не 9) - это то, с чем я работаю в эти дни.