隔离存储 - 异常的奇怪错误

时间:2014-02-23 14:16:16

标签: c# windows-phone-7 exception windows-phone-8 isolatedstorage

我尝试在设备上的IsolatedStorage中保存图片。我关闭互联网并点击我的应用程序中的按钮。第一次,异常正确显示: “远程服务器返回错误: NOTFOUND“。

下一步:我打开互联网并点击按钮 - 图像保存在手机上。 一切都很好。

现在是最重要的事情:当我再次关闭互联网时,我将永远不会再看到这个异常(如果我想看到我必须卸载,并再次安装应用程序)

为什么?

p.s:对不起我的英文

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);
    }

}

1 个答案:

答案 0 :(得分:0)

您的图片在第一次请求后被缓存,所有其他请求将首先尝试从缓存中获取文件,如果找到该文件,则不会向互联网发出请求。

如果你想避免它:

1)在您自己的带有文件的服务器上,您可以将Cache-Control: max-age标头值修改为可以缓存图像的时间。

2)为client.OpenReadAsync(new Uri(@"http://www.myurl.com/" + path + "/" + number.ToString() + ".jpg" + "?rand=" + GetRandomNumber()), client);

等每个请求构建唯一的请求URI