Как Вы вынуждаете Firefox не кэшировать или повторно загрузить файл XAP Silverlight?

Newtonsoft.JSON является хорошим решением для подобных ситуаций. Кроме того, Newtonsof.JSON работает быстрее других, таких как JavaScriptSerializer, DataContractJsonSerializer.

В этом примере вы можете:

var jsonData = JObject.Parse("your json data here");

Затем вы можете использовать jsonData для JArray, и вы можете использовать для цикла для получения данных на каждой итерации. Кроме того, я хочу что-то добавить.

for (int i = 0; (JArray)jsonData["data"].Count; i++)
{
    var data = jsonData[i - 1];
}

Работа с динамическим объектом и использование сериализации Newtonsoft - хороший выбор.

50
задан Ether 18 October 2009 в 05:36
поделиться

13 ответов

До сих пор единственное решение, которое я нашел, как только проблема происходит, состоит в том, чтобы очистить кэш Firefox.

А лучшее решение было бы намного лучше.

0
ответ дан Timothy Lee Russell 7 November 2019 в 11:03
поделиться

У меня была эта проблема поэтому теперь, когда я запускаю новое приложение, я установил версию блока на 0.0.0.1 и просто обновляю ее одной на каждом развертывании, кажется, решил его для меня. Тогда просто задержите его к 1.0.0.0 на выпуске.

0
ответ дан David Casey 7 November 2019 в 11:03
поделиться

Супер простая идея: просто добавьте поддельную строку запроса к URL.

<param name="source" value="app.xap?r12345"/>

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

Идеально, Ваш сервер должен сделать это для Вас. Но если нет...

0
ответ дан Kevin Moore 7 November 2019 в 11:03
поделиться

Вы могли отправить HTTP-заголовки, чтобы препятствовать тому, чтобы он кэшировался:

Cache-control: no-cache
Pragma: no-cache

, Как Вы, это зависит от веб-сервера, который Вы используете.

4
ответ дан Jarett Millard 7 November 2019 в 11:03
поделиться

Мы находимся также в той же ситуации, где мы хотим управлять, когда.XAP файл загружается на браузер.

подход, на который Вы могли бы хотеть смотреть, должен использовать Silverlight Изолированное устройство хранения данных в качестве "кэша", чтобы хранить Ваши.XAP файлы.

Выезд этот блог: IsolatedStorage как Silverlight возражают кэшу

0
ответ дан ptio 7 November 2019 в 11:03
поделиться

Вы могли бы найти Кэширующееся Учебное руководство для веб-Авторов и Веб-мастеров полезный. Этот документ обсуждает различные кэши, через которые клиент и сервер взаимодействуют (браузер, прокси, шлюз) и как кэшированием можно управлять.

5
ответ дан converter42 7 November 2019 в 11:03
поделиться

Я получаю это работать, сочетая приведенные выше предложения:

  1. Установите для атрибутов метатега cache-control / pragma http-Equiv значение «No-Cache»
  2. Используйте страницу ASP.NET для размещения элемента управления silverlight (в отличие от HTML page)
  3. Установите свойство Source элемента управления ASP.NET Silverlight в исходном коде, добавив метку времени к URL-адресу .xap, например

    Silverlight1.Source = "ClientBin / MyApplication.xap?" + DateTime.Now.ToString ("dd-MM-yy-HH: mm: ss");

1
ответ дан 7 November 2019 в 11:03
поделиться

Другим решением было бы добавить версию файла XAP, а не метку времени. Отметка времени будет меняться каждый раз (с таким же успехом можно отключить кеширование). Чтобы заставить его изменяться только после обновления XAP, нужно взять некоторую информацию из файла XAP. Все еще изучаю, что можно было бы использовать, возможно, последнюю измененную дату в XAP-файле?

2
ответ дан 7 November 2019 в 11:03
поделиться

Самый простой способ:

<param name="source" value="ClientBin/App.xap?<%= DateTime.Now.Ticks %>" />
12
ответ дан 7 November 2019 в 11:03
поделиться

Строка запроса работает отлично, но я бы не стал использовать DateTime.Now , потому что он заставляет пользователя каждый раз повторно загружать приложение. Вместо этого мы используем следующее:

protected void Page_Load(object sender, EventArgs e)
{
    var versionNumber = Assembly.GetExecutingAssembly().GetName().Version.ToString();
    this.myApp.Source += "?" + versionNumber;
}

Таким образом, все, что вам нужно сделать, это увеличить номер версии в файле AssemblyInfo.cs .

32
ответ дан 7 November 2019 в 11:03
поделиться

Это то, что я делаю в php. Вы читаете дату / время файла xap и добавляете его в качестве параметра к ссылке для загрузки. Таким образом, браузер видит новые версии файлов как новые ссылки, а значит, не в своем кэше.

<?php $fdate = date("dHis",filemtime("MyApp.xap")) ?>

<param name="source" value="MyApp.xap?=<?php echo $fdate ?>"/>

Просто и работает. Кроме того, браузеры продолжают правильно кэшировать, когда нет обновлений для загрузки.

6
ответ дан 7 November 2019 в 11:03
поделиться

Наш Семантический CloneDR Проектов - инструмент, который обнаруживает блоки программы «паста копии, редактируют», для многих языков: C, C++, Ява, C++, КОБОЛ, ECMAScript, PHP, VB6, VB.net...

Он использует синтаксические анализаторы с точностью до языка для построения абстрактных синтаксических деревьев, соответствующих точным структурам программ, которые затем сравниваются для подобия. Это означает, что он не путается ни в одном пути с помощью пробела, форматирования, комментариев или даже другого «написания» литералов (например, 3,14159 совпадает с 0,00314150E3).

Создается отчет, который показывает точно , как блоки кода похожи и точно различаются. По ссылке можно просмотреть примеры отчетов.

-121--3653723-

Можно добавить исходный URL-адрес в тэге объекта с датой последней записи XAP-файла. Проверьте код в блоге .

1
ответ дан 7 November 2019 в 11:03
поделиться

Идея строки запроса не работает для меня в Silverlight 4. Кажется, сервер кэширует проклятый xap (но не файл aspx). Решение, которое действительно работает в SL4, - это перейти к свойствам вашего проекта Silverlight, перейти к информации о сборке и ввести версию.

-1
ответ дан 7 November 2019 в 11:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: