1

我嘗試在我的設備上保存IsolatedStorage中的圖片。我關閉互聯網並點擊我的應用程序中的按鈕。在第一次,異常顯示正確: 「遠程服務器返回錯誤: NotFound。」孤立存儲 - 奇怪的錯誤與異常

下一步:我打開互聯網並點擊按鈕 - 圖像保存在我的手機上。 一切都很好。

現在是最重要的事情:當我再次關閉互聯網,我永遠不會再看到這個異常(如果我想看到我必須卸載,然後重新安裝應用程序)

爲什麼?

PS:對不起,我的英語

public void update() 
{ 
    WebClient client = new WebClient(); 
    client.OpenReadCompleted += new OpenReadCompletedEventHandler(client_OpenReadCompleted); 
    client.OpenReadAsync(new Uri(@"http://www.myurl.com/" + path + "/" + number.ToString() + ".jpg"), client); 
} 

void client_OpenReadCompleted(object sender, OpenReadCompletedEventArgs e) 
{ 
    try 
    { 
     var resInfo = new StreamResourceInfo(e.Result, null); 
     var reader = new StreamReader(resInfo.Stream); 
     byte[] contents; 

     using (BinaryReader bReader = new BinaryReader(reader.BaseStream)) 
     { 
      contents = bReader.ReadBytes((int)reader.BaseStream.Length); 
     } 

     if (!MyStore.DirectoryExists(path)) 
      MyStore.CreateDirectory(path); 

     IsolatedStorageFileStream stream = MyStore.CreateFile(path +"/"+ number.ToString() + ".jpg"); 
     stream.Write(contents, 0, contents.Length); 
     stream.Close(); 
    } 

    catch (Exception ex) 
    { 
     MessageBox.Show(ex.Message); 
    } 

} 

回答

0

你的形象已經在第一次請求之後被緩存和所有其他請求都將試圖從緩存中的文件,第一,如果該文件已被發現 - 沒有請求到互聯網將被製作。

如果你想避免:

1)在自己的服務器與文件,你可以修改Cache-Control: max-age頭值在一定時間的圖像可以被緩存。

2)建立獨特的請求URI像client.OpenReadAsync(new Uri(@"http://www.myurl.com/" + path + "/" + number.ToString() + ".jpg" + "?rand=" + GetRandomNumber()), client);

+0

它的作品:)的每個請求。非常感謝您的解答和解釋。 – lukas