Причины, по которым ASP.NET AJAX будет отключен - PullRequest
7 голосов
/ 20 мая 2011

У меня есть приложение ASP.NET, которое использует ASP.NET AJAX и AJAX Control Toolkit.Приложение отлично работает во всех последних браузерах на ПК.Он также отлично работает на моем iPad, по крайней мере, при первом обращении к приложению.Я обнаружил, что если я выключу iPad и вернусь на страницу позже (через закладку или подобное), сайт будет поврежден.Я сузил проблему до проблемы / ошибки / ограничения ASP.NET/ASP.NET AJAX, и я ищу некоторую помощь для прогресса.

Используя Fiddler в качестве прокси-сервера для iPad, я обнаружил следующие проблемы при повторном открытии страницы.

  1. Мой * .skin файл применяется неправильно.Сгенерированный тег стиля просто не включает некоторые параметры, указанные в файле * .skin.
  2. Страница не содержит файл MicrosoftAjaxWebForms.js.(При работе он выдает ссылку на ScriptResource.axd прямо над всеми скриптами ToolkitScriptManager.
  3. Страница не содержит ссылку на другой файл js, начинающийся с функции WebForm_FindFirstFocusableChild (control)
  4. Страница не содержит несколько скрытых полей, таких как __LASTFOCUS, __EVENTTARGET и __EVENTARGUMENT
  5. Страница не содержит блок скрипта с использованием document.forms ['aspnetForm'] и определением __doPostBack.
  6. Страница не содержит блок сценария, выполняющий Sys.WebForms.PageRequestManager._initialize
  7. Некоторые другие сценарии инициализации отсутствуют (настройка фокуса, создание updateprogress и т. Д.)

Почему-то кажется, что фреймворк решает, что эти сценарии не нужны и не генерирует их. Учитывая, что все сценарии взаимосвязаны, должна быть общая причина. Это может быть связано с тем, что *.свойства кожи не включены. Есть идеи? я бы подумалВозможности браузера ut, но это происходит только при последующих посещениях сайта, а не при первом.

Редактировать: определенно похоже на проблему с возможностями браузера.

Запросы для работы: User-Agent: Mozilla / 5.0 (iPad; U; CPU OS 4_3_3, как Mac OS X; en-us) AppleWebKit / 533.17.9 (KHTML, как Gecko) Версия /5.0.2

Запросы, которые не: User-Agent: Mozilla / 5.0 (iPad; U; CPU OS 4_3_3, как Mac OS X; en-us) AppleWebKit / 533.17.9 (KHTML,как Gecko) Mobile / 8J2

Попытка создания пользовательского файла в App_Browsers и отправка с дополнительной информацией.

Ответы [ 2 ]

6 голосов
/ 20 мая 2011

Основная проблема заключается в том, что ASP.NET распознает iPad как «Mozilla» общего уровня вместо Safari, , когда приложение загружается в полноэкранном режиме . Он считает, что JavaScript не поддерживается и т. Д.

Решение состоит в том, чтобы добавить следующее ко всем вашим страницам ASP.NET (добавив это к базовой странице, на которой все ваши страницы ASP.NET получены).

    protected void Page_PreInit(object sender, EventArgs e)
    {
        if (Request.UserAgent != null && Request.UserAgent.IndexOf("AppleWebKit", StringComparison.CurrentCultureIgnoreCase) > -1)
        {
            this.ClientTarget = "uplevel";
        }
    }

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

1 голос
/ 20 марта 2012

Я обычно делаю это в global.asax

void Application_BeginRequest(Object sender, EventArgs e)
{
    Request.Browser.Adapters.Clear();
}
...