Windows 8 ZipArchive不适用于通用应用程序(Windows 8.1和Windows Phone 8.1)

Windows 8 ZipArchive不适用于通用应用程序(Windows 8.1和Windows Phone 8.1),windows-8,windows-runtime,windows-8.1,windows-phone-8.1,win-universal-app,Windows 8,Windows Runtime,Windows 8.1,Windows Phone 8.1,Win Universal App,嗨,我的通用应用程序的ZipArchive出现了这个问题。下面的代码适用于Windows Phone,但不适用于Windows 8.1应用程序 我不明白为什么这不适用于Windows 8.1应用程序,而只适用于Windows Phone 我得到的例外是:中央目录末尾预期的条目数与中央目录中的条目数不对应。当我试着读这些条目时 using (var zipStream = await folder.OpenStreamForReadAsync(filename))

嗨,我的通用应用程序的ZipArchive出现了这个问题。下面的代码适用于Windows Phone,但不适用于Windows 8.1应用程序

我不明白为什么这不适用于Windows 8.1应用程序,而只适用于Windows Phone

我得到的例外是:中央目录末尾预期的条目数与中央目录中的条目数不对应。当我试着读这些条目时

        using (var zipStream = await folder.OpenStreamForReadAsync(filename))
        {
            using (MemoryStream zipMemoryStream = new MemoryStream((int)zipStream.Length))
            {
                await zipStream.CopyToAsync(zipMemoryStream);

                using (var archive = new ZipArchive(zipMemoryStream, ZipArchiveMode.Read))
                {
                    try
                    {
                        // THIS CAUSE THE EXCEPTION!!!!
                        foreach (var entry in archive.Entries)
                        {

                            if (entry.Name == "")
                            {
                                // Folder
                                await CreateRecursiveFolder(folder, entry);
                            }
                            else
                            {
                                // File
                                await ExtractFile(folder, entry);
                            }
                        }

                    }
                    catch (Exception ex)
                    {
                        System.Diagnostics.Debug.WriteLine(ex.Message);
                        //throw;
                    }
                }
            }

您确定foreach循环导致异常吗?我会说它在CreateRecursiveFolder或ÈxtractFile方法中的某个地方,由于这些方法是异步的,所以会出现异常!我认为这是Windows8.1框架中的一个缺陷。当它作为Windows Phone应用程序运行时,相同的文件也可以工作!我无法解释为什么这在手机上有效而在RT上无效。但您是否尝试添加zipMemoryStream.Position=0;将数据复制到内存流之后?也许ZipArchive的手机实现会根据需要进行搜索,但RT的版本不会?我假设您在这两种情况下使用的代码完全相同