2013-12-05 6 views
1

У нас есть три приложения 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 

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

+0

Silverlight полагается на механизмы кэширования http, чтобы определить необходимость обновлений. Следующее, что нужно попробовать, - это просмотр запроса на обновление в скрипаче. Ответ скорее всего будет немодифицированным и не содержать xap (следовательно, нет «UpdateAvailable»). Затем вы можете повторить запрос вручную в скрипаче и выяснить, почему ответ считается ненужным. – John

+0

Я не знаю, что такое скрипач. –

+0

Это чрезвычайно популярный инструмент для анализа веб-запросов. Вы будете нуждаться в нем каждый раз, когда захотите узнать, что происходит на уровне http. Я почти уверен, что вы в такой ситуации. Сам инструмент прост в использовании, но вам потребуется немного знаний о http-кешировании заголовков для диагностики проблемы. – John

ответ

0

У меня был ответ, который работал на меня на одном из других форумов. Я размещаю его здесь, если у кого-то еще есть эта проблема:

Я добавил эти строки в свой ServiceReferences.ClientConfig.

<object> 
    <param name="autoUpgrade" value="true"/> 
    </object> 

Намек также сказал, чтобы подписать XAP, который я сделал, но проблема не ушла, пока я не изменил ClientConfig.

Bob

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