我試圖解開從網絡服務器收到的System.IO.Packaging.Package
。也就是說,我正在使用System.IO.Packaging.Package.Open(Stream)
方法並將其傳遞給System.Net.HttpWebResponse
的響應流。不幸的是,這引起了System.ArgumentException
告訴我它從不可查找的流中打開System.IO.Packaging.Package
無法對不支持查找[A]流進行操作。
綜觀參考源事實證明,System.IO.Packaging.Package
使用System.IO.Packaging.ZipPackage
作爲其唯一的這反過來使用內部ZipArchive
類實現。當然,如果stream.CanSeek
是false
(這是來自我的HttpWebResponse
的響應流的情況),則ValidateModeAccessStreamStreamingCombinations()
方法在行588中引發此異常。
然而,有一種神奇的streaming
參數,該參數很明顯,總是false
,並得到來自Package.Open()
方法傳來傳去一路下跌到ValidateModeAccessStreamStreamingCombinations()
。
所以這裏是我的問題:有沒有什麼辦法可以使用Package.Open(Stream)
構建一個Package
從不可查找的流中實時運行?或者我必須在某處緩存流內容,例如在MemoryStream
? (我真的不想這樣做,因爲我一旦解開它就對包流不感興趣。)