я использовал трюк метку времени на объекте > Silverlight < (см GetLastWriteTime()
, используя ответы в How do you force Firefox to not cache or re-download a Silverlight XAP file?) успешно с Silverlight 4.Silverlight 5 - OOB установка/обновление сломана при использовании анти-кэш трюк
Использование Silverlight 5 runtime *, функция установки/автоматического обновления OOB теперь кажется сломанной. У меня есть два вопроса:
- при запуске в браузере, текущее состояние установки всегда «не установлен» (в коде:
Application.Current.InstallState == System.Windows.InstallState.NotInstalled
всегдаtrue
) - при запуске в режиме OOB, он всегда говорит, что новый версия (в коде:
CheckAndDownloadUpdateAsync()
всегда возвращается сe.Error == null
иe.UpdateAvailable == true
).
Неужели кто-то еще столкнулся с этим, и еще лучше, имеет обходное решение?
* Точность: В настоящее время мое приложение построено с использованием Silverlight 5 Tools, но ориентирована на Silverlight 4, и отлично работает на платформе Silverlight 4 Время воспроизведения. Проблема возникает (по крайней мере) на моей машине dev с использованием Silverlight 5 Developer Runtime.
Update: Я проверил с Скрипач, что происходит на моем Dev поле. Когда процесс обновления вызывается, я вижу:
GET /ClientBin/Client.xap?timestamp=23%2f01%2f2012+17%3a42%3a14 HTTP/1.1
If-Modified-Since: Tue, 24 Jan 2012 09:10:07 GMT
Это хорошо для меня, за исключением того, что сервер (сервер: ASP.NET Development Server,/10.0.0.0, X-Сеть САШ-версии: 4.0.30319) возвращает новая версия, со следующими заголовками кэша:
HTTP/1.1 200 OK
Cache-Control: private
Date: Tue, 24 Jan 2012 09:11:28 GMT
Каждый раз, когда я запустить приложение, запрос проверки имеет правильную дату (тот ранее возвращенный сервер), и каждый раз, сервер говорит, что это имеет новая версия с текущей датой. Я попытаюсь настроить конфигурацию сервера.
Update2: У меня была директива по управлению кешем в файле Web.config, но ее удаление только разрешило половину проблемы. Теперь приложение в браузере обнаруживает, что установка OOB в порядке, но цикл обновления продолжается с той же трассировкой Fiddler.
Update3: Проблема, безусловно, связана с отладочным веб-сервером. В том же приложении, установленном для надлежащего IIS с тем же Web.config, нет этой проблемы. Но это все еще раздражает, так как это значительно замедляет мой отладочный процесс OOB.
Update4: На самом деле, эта проблема все еще присутствует даже на основном развертывания IIS, и произошло на других серверах тоже (и с помощью PHP для создания метки вместо ASP.NET). Поэтому любая помощь приветствуется.
Update5: В соответствии с просьбой, вот мой код, довольно прост:
private void CheckAndDownloadUpdateCompleted(object sender, System.Windows.CheckAndDownloadUpdateCompletedEventArgs e)
{
if (e.Error != null)
{
if (e.Error is PlatformNotSupportedException)
{
UpdateType = UpdateTypes.PlatformUpdate;
//(...)
return;
}
else if (e.Error is SecurityException)
{
UpdateType = UpdateTypes.ElevationRequired;
//(...)
return;
}
else
{
// Error handling code
//(...)
}
}
else if (e.UpdateAvailable)
{
UpdateType = UpdateTypes.Available;
//(...)
return;
}
UpdateType = UpdateTypes.NoUpdate;
//(...)
}
UpdateType
является свойство типа перечисления, которые позволяют мне выбрать правильную локализованы строку где-то в другом месте.
Update6: Различные //(...)
части (косвенно) изменения вида приложения, UpdateType
не является.
Я испытал аналогичная проблема при использовании веб-сервера xsp от Mono и сообщила об ошибке здесь: https://bugzilla.novell.com/show_bug.cgi?id=649789. Как вы тестируете обновление? Я не уверен, но, возможно, e.UpdateAvailable указывает, что обновление среды Silverlight доступно вместо простого обновления программы? Когда я использую IIS, это не проблема, потому что IIS использует встроенный контроль кеша. Как вы устанавливаете приложение OLE Silverlight? –
У меня есть кнопка в моем приложении, которая видна только в том случае, если приложение еще не установлено. Это не работает (приложение сообщается как не установлено, когда оно есть на самом деле). – jv42
Иногда я также использую функцию правого щелчка => Установить, те же результаты. – jv42