2016-10-17 5 views
1

Моя первоначальная проблема заключалась в том, что мой сайт дал ошибку при обратной передаче только на некоторых устройствах iPhone и iPad. Сайт отлично работал на всех настольных компьютерах, а также на большинстве других телефонов. Ошибка была специфична для устройства, а не для браузера. Я нашел ответ на этот вопрос в следующем discussions-Как очистить кешированные пользовательские агенты

.Net 4.0 website cannot identify some AppleWebKit based browsers

ASP.NET Ajax postback suddenly stops on IPhone/IPad

Суть этих обсуждений

это-

«Структура .NET кэширует ключи агента пользователя. По умолчанию размер Кэш пользовательского агента - 64 символа. Значение: .NET кэширует первые 64 символа строки UserAgent в качестве ключа. Поэтому в следующий раз, когда пользователь, чей UA начинается с того же 64 символов, посещает сайт, он отображается на ранее сохраненный ключ в памяти. Теперь сайт ведет себя таким же образом для этого нового агента пользователя.

В большинстве случаев это не проблема, но иногда появляется пользовательский агент, который выглядит как Safari, но на самом деле это не так, и что он не разрешен должным образом (Mozilla 0.0 без каких-либо возможностей), но отображение все еще сохраняется в кеше, что означает, что все строки UserAgent с тем же префиксом 64 символов (который в точности совпадает с тем, что у многих обычных Safaris) теперь неправильно отображаются, пока эта запись кэша не истечет ».

Добавление browserCaps с длиной агента пользователя 256 решить эту проблему для некоторых устройств, но не для тех, которые используют хром, а также сафари на их Ipad/Iphone.

есть любой способ очистить эти кэшированные пользовательские агенты? очистка кеша браузера в обоих браузерах, похоже, не работает.

ответ

0

После выполнения некоторых копаться в Интернете, я нашел способ, чтобы очистить эту cache-

Источник: https://msdn.microsoft.com/en-us/library/ms228122(v=vs.85).aspx

Изменения в .browser файлы, расположенные в каталоге App_Browsers недействительным кэш, а следующий запрос приведет к повторной компиляции приложения.

Однако, если изменения вносятся в .browser файлы в % SystemRoot% \ Microsoft.NET \ Framework \ версия \ CONFIG \ каталог Браузеры, необходимо вручную перекомпилировать приложение, используя% SystemRoot% \ Microsoft. NET \ Framework \ version \ aspnet_regbrowsers.exe, или вы должны программно перекомпилировать его с помощью класса BrowserCapabilitiesCodeGenerator.

В нем не указывается, какие изменения вы должны делать, но я предполагаю, что любые внешние изменения заставят его перекомпилировать. Я еще должен проверить это, просто хотел поместить его здесь, если кто-то попробовал это.

Смежные вопросы