C# 从不可查找的流打开System.IO.Packaging.Package

C# 从不可查找的流打开System.IO.Packaging.Package,c#,.net,system.io.packaging,C#,.net,System.io.packaging,我正在尝试解压缩从web服务器收到的文件。也就是说,我正在使用该方法并将System.Net.HttpWebResponse的响应流传递给它。不幸的是,这引发了一个System.ArgumentException告诉我 无法对不支持搜索的[a]流进行操作 查看参考源代码,发现System.IO.Packaging.Package使用System.IO.Packaging.ZipPackage作为其唯一的实现,而该实现又使用内部ZipArchive类。果然,如果stream.CanSeek为fal

我正在尝试解压缩从web服务器收到的文件。也就是说,我正在使用该方法并将
System.Net.HttpWebResponse
的响应流传递给它。不幸的是,这引发了一个
System.ArgumentException
告诉我

无法对不支持搜索的[a]流进行操作

查看参考源代码,发现
System.IO.Packaging.Package
使用
System.IO.Packaging.ZipPackage
作为其唯一的实现,而该实现又使用内部
ZipArchive
类。果然,如果
stream.CanSeek
false
,则该方法会在第588行引发此异常,这是my
HttpWebResponse
的响应流的情况

但是,有一个神奇的
streaming
参数,它显然总是
false
,并从
包中传递。Open()
方法一直传递到
validateDoAccessStreamingCombinations()


所以我的问题是:有没有任何方法可以使用
Package.Open(Stream)
从不可查找的流动态构建
Package
?或者我必须将流内容缓存在某个地方,例如在
内存流中?(我真的不想这么做,因为一旦打开包流,我就对它不感兴趣。)

嗯,没关系。
streaming
参数仅用于动态编写
System.IO.Packaging.Package
。从这里开始,有一堆“写时间streaimgapi”方法。还有一个方法,它只在我尝试编写包时引发异常

因此,是的,我必须将来自
HttpWebResponse
的不可查找流缓存在
MemoryStream
或临时文件中。不要在飞行中为我打开行李:(