2009-03-01 4 views
4

Этот вопрос has been asked before, но 1) пользователь никогда не принимал ответ 2) ни один из них не выделяется лучше других (по голосам) и 3) кажется, что искатель забыл об этом. Поэтому я собираюсь попросить его снова, чтобы я мог принять принятый ответ. И некоторые из пользователей в потоке сказали, что некоторые из решений не работают. Извините за загромождение места, но я обещаю разобраться в этом.force firefox, чтобы получить самую последнюю версию приложения silverlight

Я столкнулся с этой проблемой на днях, когда смотрел приложение Silverlight в Firefox. Я внес изменения в расположение изображения, и он не двигался. Я предположил, что сделал это неправильно, но потом посмотрел на IE7, и изображение было в нужном месте. Оказывается, Firefox показывает кэшированную версию файла; изменения, которые я сделал, не проявились.

Это большая проблема: если я изменю свое приложение (скажем, это срочная коррекция опечатки), как заставить конечного пользователя увидеть самую последнюю версию моего приложения Silverlight? Действительно ли isolated storage (Heuer's blog) - единственный способ заставить обновление со стороны сервера? Очистка кеша Firefox не будет работать для обновления push; Мне нужно, чтобы обновление распространялось без конечного пользователя.

Обновление: Dino Esposito имеет некоторые идеи об управлении этим, в частности, с использованием свойства Expires объекта Response. У меня еще не было возможности попробовать это.

ответ

1

Во-первых, вам необходимо создать приложение после каждого изменения макета или кода. Silverlight не является HTML, это код, который выполняется локально.

Во-вторых, фактическое решение этой проблемы:

  1. page.xaml нагрузки, стартует в асинхр на веб-сервиса, который находится на основной странице
  2. вебсервис детектирует Firefox
  3. если Firefox, скажите ответ, что он истекает сразу

    [OperationContract] 
    public bool DetectFirefox() 
    { 
        if ((HttpContext.Current.Request.Browser.Browser == "Firefox") && 
         ((HttpContext.Current.Request.Browser.MajorVersion >= 2))) 
        { 
         HttpContext.Current.Response.Expires = -1; 
        } 
        return true; 
    } 
    

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

2

Можете ли вы кодировать номер версии или временную метку в имени файла? Таким образом, если страница изменится, Firefox заметит, что она указывает на совершенно другой ресурс и перезагрузит его.

+0

Этот ответ является одним из ответов на другой вопрос и, вероятно, является лучшим решением. Если вы измените URL-адрес, у браузера нет выбора, кроме как загрузить новое приложение. – Kibbee

+0

Так измените имя файла в коде? Надеюсь, это не то, что я должен сделать ... – jcollum

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