Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在下载图像后访问要显示的图像时捕获拒绝访问异常_C#_Windows Runtime_Windows Store Apps_Windows 8.1_File Access - Fatal编程技术网

C# 在下载图像后访问要显示的图像时捕获拒绝访问异常

C# 在下载图像后访问要显示的图像时捕获拒绝访问异常,c#,windows-runtime,windows-store-apps,windows-8.1,file-access,C#,Windows Runtime,Windows Store Apps,Windows 8.1,File Access,我正在创建windows 8.1应用商店应用程序。此应用程序下载并向用户显示图像 下载图像的代码: HttpClient client = new HttpClient(); foreach (Doodle d in doodleslist) { HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Get, d.url.Replace("//", "http://")); HttpResponseM

我正在创建windows 8.1应用商店应用程序。此应用程序下载并向用户显示图像

下载图像的代码:

HttpClient client = new HttpClient();
foreach (Doodle d in doodleslist)
{
    HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Get, d.url.Replace("//", "http://"));
        HttpResponseMessage response = await client.SendAsync(request, HttpCompletionOption.ResponseHeadersRead);
        //write to file.
        filename = d.name.Replace(@"/", "-");
        var imgFile = await folder.CreateFileAsync(filename + ".jpg", CreationCollisionOption.ReplaceExisting);
        var fs = await imgFile.OpenAsync(FileAccessMode.ReadWrite);
        var outStream = fs.GetOutputStreamAt(0);
        var dataWriter = new Windows.Storage.Streams.DataWriter(outStream);
        dataWriter.WriteBytes(await response.Content.ReadAsByteArrayAsync());
        await dataWriter.StoreAsync();
        dataWriter.DetachStream();
        await fs.FlushAsync();
        dataWriter.Dispose();
        fs.Dispose();
}
显示下载图像的代码:

try
{
    string month = datepickerDoodle.Date.Month.ToString();
        string year = datepickerDoodle.Date.Year.ToString();
    imgList.Items.Clear();
        StorageFolder y =await KnownFolders.PicturesLibrary.GetFolderAsync(year);
        StorageFolder m = await y.GetFolderAsync(month);
        IReadOnlyList<StorageFile> fileList = await m.GetFilesAsync();
        foreach (StorageFile file in fileList)
        {
             BitmapImage bm = new BitmapImage();
                 using (Windows.Storage.Streams.IRandomAccessStream fileStream = await file.OpenAsync(Windows.Storage.FileAccessMode.Read))
                 {
                     bm.SetSource(fileStream);
                         Image img = new Image();
                         img.Source = bm;
                         img.Height = 120;
                         img.Width = 220;
                         img.Name = file.Path;
                         img.Stretch = Stretch.Fill;
                         img.HorizontalAlignment = HorizontalAlignment.Center;
                         img.VerticalAlignment = VerticalAlignment.Center;
                         TextBlock txtBlock = new TextBlock();
                         txtBlock.Width = 250;
                         txtBlock.TextTrimming = TextTrimming.WordEllipsis;
                         txtBlock.Text = file.Name.Replace(".jpg", null);
                         imgList.Items.Add(img);
                         imgList.Items.Add(txtBlock);
                        }
                    }
                }
catch(Exception ex)
{
   throw ex;
}
错误消息:

Access is denied. (Exception from HRESULT: 0x80070005 (E_ACCESSDENIED))

请任何人帮我解决这个问题。谢谢,我的问题解决了。我修改了我的下载图像代码如下:

HttpClient client = new HttpClient();
foreach (Doodle d in doodleslist)
{
    HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Get, d.url.Replace("//", "http://"));
        HttpResponseMessage response = await client.SendAsync(request, HttpCompletionOption.ResponseHeadersRead);
        //write to file.
        filename = d.name.Replace(@"/", "-");
        var imgFile = await folder.CreateFileAsync(filename + ".jpg", CreationCollisionOption.ReplaceExisting);
        var fs = await imgFile.OpenAsync(FileAccessMode.ReadWrite);
         using (var outStream = fs.GetOutputStreamAt(0))
                    {
                        using (var dataWriter = new Windows.Storage.Streams.DataWriter(outStream))
                        {
                            dataWriter.WriteBytes(await response.Content.ReadAsByteArrayAsync());
                            await dataWriter.StoreAsync();
                            dataWriter.DetachStream();
                            await fs.FlushAsync();
                            dataWriter.Dispose();
                            fs.Dispose();
                        }
                    }
}
看看这个:
HttpClient client = new HttpClient();
foreach (Doodle d in doodleslist)
{
    HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Get, d.url.Replace("//", "http://"));
        HttpResponseMessage response = await client.SendAsync(request, HttpCompletionOption.ResponseHeadersRead);
        //write to file.
        filename = d.name.Replace(@"/", "-");
        var imgFile = await folder.CreateFileAsync(filename + ".jpg", CreationCollisionOption.ReplaceExisting);
        var fs = await imgFile.OpenAsync(FileAccessMode.ReadWrite);
         using (var outStream = fs.GetOutputStreamAt(0))
                    {
                        using (var dataWriter = new Windows.Storage.Streams.DataWriter(outStream))
                        {
                            dataWriter.WriteBytes(await response.Content.ReadAsByteArrayAsync());
                            await dataWriter.StoreAsync();
                            dataWriter.DetachStream();
                            await fs.FlushAsync();
                            dataWriter.Dispose();
                            fs.Dispose();
                        }
                    }
}