我想使用Silverlight創建一個在線測驗網站。 當註冊用戶登錄後,他們可以每頁查看並回答測驗一次。 要繼續下一個問題,他們必須推下一個按鈕,並從服務器下載新數據。 以前的問題沒有被緩存。因此每次請求問題時,問題都會從服務器重新加載。在Silverlight編程中,如何防止訪問者緩存下載的內容?
我的問題是如何做到我在silverlight上面的場景?
預先感謝您。
我想使用Silverlight創建一個在線測驗網站。 當註冊用戶登錄後,他們可以每頁查看並回答測驗一次。 要繼續下一個問題,他們必須推下一個按鈕,並從服務器下載新數據。 以前的問題沒有被緩存。因此每次請求問題時,問題都會從服務器重新加載。在Silverlight編程中,如何防止訪問者緩存下載的內容?
我的問題是如何做到我在silverlight上面的場景?
預先感謝您。
創建silverlight應用程序以通過Web服務請求問題。只要你使用正確的網絡服務,而不是以某種方式僞裝它。瀏覽器不會緩存web服務響應。
您可以使用IsolatedStorage來存儲一些與狀態相關的信息(如果需要,您甚至可以在保存之前對其進行加密 - 這是您的存儲空間,按照您的需要進行操作)。另一種存儲狀態信息的方式是使用cookie,here和here。
我所指的「狀態」信息是您的Silverlight應用程序的狀態和/或進度,即您可以跟蹤用戶在問題中的位置,並避免提出已完成的問題。如果他們知道他們在做什麼,這兩種類型的存儲都可以由最終用戶刪除。但是你不應該讓你擔心 - 如果他們想欺騙,那就讓他們。
現在您的意圖很明確,您想要防止發現組件中的內容。答案是你無法真正保護你的裝配。爲了運行它,客戶端需要獲取它,如果它可以被獲取,那麼黑客可以獲得它,試圖限制緩存並不是真正的預防。
但是,解決方案是不要在您的程序集中添加敏感內容。放置代碼服務器端來執行敏感的東西,並通過服務接口(如WCF或Web服務)訪問該代碼,甚至可以在XML中發佈簡單的舊XML。
+1以清楚表明他想要什麼。很遺憾,你沒有告訴他Silverlight Spy和Reflector只是爲了嚇倒他,反向工程是多麼容易:) – slugster 2010-05-27 12:23:27
你是什麼意思的「以前的問題沒有緩存」? – alejandrobog 2010-05-27 07:03:22
來自服務器*的HTTP新鮮頭應該*幫助你;檢查Silverlight發出HTTP請求的方式。 – Piskvor 2010-05-27 07:03:33
@alejandrobog, 我的測驗中的上一個問題意味着任何已被查看的問題。 – xport 2010-05-27 07:42:09