2009-03-01 74 views
4

這個問題has been asked before但1)用戶從未接受過答案2)沒有一個比其他人更出色(投票方式)和3)提問者似乎有忘了它。所以我會再問一遍,這樣我就可以得到一個被接受的答案。該主題中的一些用戶表示,其中一些解決方案無效。抱歉讓這個地方混亂不堪,但我保證能夠做到這一點。強制firefox獲取最新版本的silverlight應用程序

當我在Firefox中查看我的Silverlight應用程序時,我遇到了這個問題。我改變了圖像的位置,並沒有移動。我以爲我做錯了,但後來我看着IE7,圖像是在正確的地方。原來Firefox正在顯示該文件的緩存版本;我所做的更改沒有顯示出來。

這是一個更大的問題:如果我更改我的應用程序(假設這是一個緊急的錯字校正),我如何強制最終用戶查看我的Silverlight應用程序的最新版本? isolated storage (Heuer's blog)真的是從服務器端強制更新的唯一方法嗎?清除Firefox緩存不適用於推送更新;我需要更新來傳播,而不需要最終用戶做任何事情。

更新:Dino Esposito有一些關於控制這個問題的想法,特別是使用Response對象的Expires屬性。還沒有機會嘗試這一點呢。

回答

1

首先,您需要在每次佈局或代碼更改後構建應用程序。 Silverlight不是HTML,它是本地運行的代碼。

其次,實際地解決了這個:

  1. page.xaml負荷,揭開序幕的Web服務的基礎頁面
  2. webservice的檢測火狐上坐着一個異步
  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

這個答案是其他問題的答案之一,可能是最好的解決方案。如果您更改網址,瀏覽器別無選擇,只能去下載新的應用程序。 – Kibbee 2009-03-01 19:32:34

相關問題