0

當與我們的REST web服務進行通信時,將返回一個狀態碼爲304的http響應,以指示所請求的資源未發生更改。然而,我們的WP7應用程序使用HttpWebRequest類,手機在這種類型的響應被成功讀取之前需要2分鐘。HttpWebRequest定時響應狀態碼304

HttpWebRequest request = HttpWebRequest.Create("path/to/unchanged/resource") as HttpWebRequest; 
    request.Method = "GET"; 
    request.BeginGetResponse(
     new AsyncCallback(
      (aysncResult) => { 
       // response is read correctly here... 120 seconds later 
      }), null); 

我可以看到,web服務與304個沒有主體數據立即響應,該請求本身不定時出和我們的應用程序能夠成功地處理其他響應碼[404,201等]。它可能是Silverlight瀏覽器「緩存」問題嗎?

任何人都可以確認他們以前見過這個,或者對這個問題有任何想法嗎?

乾杯, 阿拉斯代爾。

==更多信息==

由於WP7 restricting某些request headers因此,我們使用自定義[IF-Modified-Since的]標題爲我們所有的資源請求。這個自定義標題[X-If-Modified-Since]被webservice前面的防火牆識別並修改回標準頭。我不確定這是否與上述問題有關。

回答

0

回答我自己的問題,以防萬一有人感興趣或面臨類似問題。

我們最終通過配置我們的網絡服務來與OK(200)HTTP狀態代碼響應,在自定義頭X-HTTP-狀態編寫實際的響應代碼創建一個變通。在客戶端解析響應時,如果此自定義標頭存在,則我們將此作爲實際狀態代碼,並從那裏繼續執行業務邏輯。

這使我們有可能處理Windows Phone處理不同的任何其他狀態代碼。

問題的原因仍然未知,儘管我們強烈懷疑由於這是一個NOT MODIFIED(304)代碼,所以在響應提供給我們之前,Silverlight中的某些低級別層會發生一些緩存。