Почему веб-приложение ASP.NET изначально использует культуру ОС вместо языка Internet Explorer 8 при запуске из Visual Studio? - PullRequest
2 голосов
/ 24 января 2012

У меня есть страница 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) - это то, с чем я работаю в эти дни.

1 Ответ

0 голосов
/ 24 января 2012

Я думаю, что вы путаете настройки клиента с настройками сервера .

Web.config указывает параметры, которые используются серверным кодом, а не кодом JavaScript (или VBScript), работающим в браузере.

...