У нас есть три приложения Silverlight, которые заканчиваются в браузере. У нас есть код в этих приложениях, поэтому приложение будет автоматически обновляться при появлении новой версии. Эта функция внезапно перестала работать в одном из трех приложений. Код, насколько я могу судить, одинаковый во всех трех приложениях. Если я удалю и переустановить приложение, запустив его из браузера и щелкнув правой кнопкой мыши, чтобы удалить и переустановить это работает нормально. Но это не отличное решение, потому что это означает, что я должен посетить каждого пользователя, чтобы исправить свой рабочий стол. Я трачу это немного и обнаружил, что меня достиг абзаца, который проверяет наличие обновлений, но e.UpdateAvailable является ложным. Я не уверен, что попробовать дальше.Автоматическое обновление в Silverlight 5
Вот мой код
Private Sub Application_Startup(ByVal o As Object, ByVal e As StartupEventArgs) Handles Me.Startup
Me.RootVisual = New MainPage
Dim l_CurrentHost As String = App.Current.Host.Source.OriginalString
If l_CurrentHost.Contains("localhost") = True Then
Exit Sub
End If
If App.Current.IsRunningOutOfBrowser Then
m_Update.startProgress()
m_Update.Show()
AddHandler App.Current.CheckAndDownloadUpdateCompleted, AddressOf DownloadUpdateCompleted
App.Current.CheckAndDownloadUpdateAsync()
End If
End Sub
Private Sub DownloadUpdateCompleted(ByVal sender As Object, ByVal e As CheckAndDownloadUpdateCompletedEventArgs)
m_Update.endProgress()
'Exit Sub
' MessageBox.Show("1")
' MessageBox.Show("We got to #3 " & e.UpdateAvailable)
If e.UpdateAvailable Then
MessageBox.Show("An application update has been downloaded, and will close. " & _
"Restart the application to run the new updated version.")
App.Current.MainWindow.Close()
ElseIf e.Error IsNot Nothing AndAlso _
TypeOf e.Error Is PlatformNotSupportedException Then
MessageBox.Show("An application update is available, " & _
"but it requires a new version of Silverlight. " & _
"Visit the application home page to upgrade.")
Else
' MessageBox.Show("2")
' MessageBox.Show("There is no update available.")
End If
End Sub
Пожалуйста, дайте мне какие-то намеки вы могли бы помочь мне решить эту проблему.
Silverlight полагается на механизмы кэширования http, чтобы определить необходимость обновлений. Следующее, что нужно попробовать, - это просмотр запроса на обновление в скрипаче. Ответ скорее всего будет немодифицированным и не содержать xap (следовательно, нет «UpdateAvailable»). Затем вы можете повторить запрос вручную в скрипаче и выяснить, почему ответ считается ненужным. – John
Я не знаю, что такое скрипач. –
Это чрезвычайно популярный инструмент для анализа веб-запросов. Вы будете нуждаться в нем каждый раз, когда захотите узнать, что происходит на уровне http. Я почти уверен, что вы в такой ситуации. Сам инструмент прост в использовании, но вам потребуется немного знаний о http-кешировании заголовков для диагностики проблемы. – John