Принуждение браузеров для перезагрузки Silverlight xap после обновления

У меня есть элемент управления Silverlight, упакованный и развернутый в веб-части SharePoint. У меня возникают проблемы с загрузкой браузером новых версий элемента управления после нажатия кнопки обновления. Я обновляю сборку и версию файла моего проекта xap, но это, похоже, не имеет значения. Единственный способ заставить браузер загружать новый xap - это входить и удалять временные интернет файлы. Для меня, во время разработки, это нормально, но мне нужно будет найти решение до его времени для производства. Любые идеи?

Ответ 1

Это связано с тем, как ваш браузер обрабатывает запросы ресурсов. Flash имеет похожие проблемы, и есть несколько способов обхода.

Здесь статья, в которой подробно описывается проблема и возможные решения.

Я бы предложил сделать что-то вроде этого:

Скажите, что у вас есть это для вашего xap в html:

<param name="source" value="ClientBin/myApp.xap"/>

Я бы это сделал, так что всякий раз, когда вы нажимаете, вы меняете номер версии. Пример:

<param name="source" value="ClientBin/myApp.xap?ver=1"/>

Ответ 2

Отлично! Работал даже в разработке Windows Phone.

Я положил строку:

NavigationService.Navigate(new Uri("/Game.xaml?versao="+version, UriKind.RelativeOrAbsolute));

И затем переопределить метод OnNavigatedTo:

protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)
{
    base.OnNavigatedTo(e);
    string var;
    if (NavigationContext.QueryString.TryGetValue("version", out var))
    {
        ...
    }
}

Ответ 3

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

Одним из решений может быть изменение свойств IIS. Вы можете включить параметр HTTP Enable Content Expiration HTTP header для вашего .XAP файла, выполнив следующие шаги:

Open IIS Manager
Go to "Default Web Site" and find web site for your Silverlight project.
Find the .XAP file under ClientBin.
Go to the properties page of the .XAP file, on HTTP Headers Tab, Turn on "Enable Content Expiration", click the "Expire Immediately" radio button.
Save the changes.

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

Надеюсь, это поможет!

Ответ 4

добавьте следующий web.config в ClientBin

<configuration>
  <system.webServer>
    <staticContent>
      <clientCache cacheControlMaxAge="0.00:00:01" cacheControlMode="UseMaxAge"/>
    </staticContent>
  </system.webServer>
</configuration>