2012-04-19 131 views
3

我在我的Windows Phone 7.1項目中使用RestSharp。WP7 - 防止RestSharp緩存

我的問題是RestSharp總是緩存響應數據。

例如:

在我第一次發送請求時,它會正確返回數據。經過一些刪除操作後,我再次發送該請求,但回覆看起來與第一次相同,沒有任何變化。

如果我停止調試並按F5重新開始,它會按預期完美工作。

我也試過request.AddParameter("cache-control", "no-cache", ParameterType.HttpHeader);,沒有運氣。

我該如何解決這個問題?

+1

RestSharp沒有任何內置緩存所以這可能是在HttpWebRequest的它建立在它之上。你有沒有對API端點的控制權?你能發佈更多的代碼嗎? – 2012-04-19 17:29:18

+2

它的黑客,但嘗試像'url = originalUrl +「&nocache =」+ DateTime.Now.Ticks' – 2012-04-19 17:31:50

+0

我使用了@RicoSuter提到的解決相同問題的類似解決方案。 – earthling 2012-04-20 01:54:40

回答

3

我在Rico Suter發現瞭解決方案,謝謝!我將標誌着這是公認的anwser

它是一種技巧,但你可以試試URL = originalUrl +「&非緩存=」 + DateTime.Now.Ticks

+0

就像Rico說的那樣,這是一個黑客......但是工作起來!不過,如果您嘗試使用「Cache-Control」並添加「Pragma」標題,我仍然很好奇! – 2012-04-20 09:55:19

+1

我們可以強調這與RestSharp無關嗎? – 2012-04-20 10:00:32

+1

是的,問題在於'HttpWebRequest'實現使用無法禁用的緩存...... – 2012-04-20 10:11:02

1

「緩存控制」標題應該做的伎倆!

我認爲HTTP頭是不區分大小寫的,但服務器可能不同意我的觀點!你應該嘗試使用Cache-Control代替cache-control ...

此外,我還將與no-cache值添加Pragma頭的要求(一些老服務器不使用「緩存控制」頭,但他們肯定會認識到這一點)!

而且我會嘗試使用Fiddler來調試通信並檢查頭部是否真的被髮送到服務器!

3

我有同樣的問題,所以只需添加頁眉指定不緩存響應數據 客戶端是具有基礎url的RestClient,並且使用值no-cache添加默認頭緩存控制。

client.AddDefaultHeader("Cache-Control", "no-cache") 
0

另一種解決方案可以設定「如果-Modified-Since的」與DateTime.Now頭值:

client.AddDefaultParameter("If-Modified-Since", DateTime.Now, ParameterType.HttpHeader);