我用弹跳卡斯特来压缩和加密一些数据。如果出现空引用异常,则压缩方法将失败。以下方法执行压缩:
private byte[] Compress(byte[] data)
{
using (MemoryStream outStream = new MemoryStream())
{
PgpCompressedDataGenerator pgpCompressedDataGenerator = new PgpCompressedDataGenerator(CompressionAlgorithmTag.Zip);
using (Stream compressedStream = pgpCompressedDataGenerator.Open(outStream))
{
PgpLiteralDataGenerator pgpLiteralDataGenerator = new PgpLiteralDataGenerator();
using (Stream literalDataStream = pgpLiteralDataGenerator.Open(compressedStream, PgpLiteralData.Binary, null, data.Length, DateTime.UtcNow))
{
literalDataStream.Write(data, 0, data.Length);
literalDataStream.Close();
pgpCompressedDataGenerator.Close();
return outStream.ToArray();
}
}
}
}下一行将导致大容量引用异常:
pgpLiteralDataGenerator.Open(compressedStream, PgpLiteralData.Binary, null, data.Length, DateTime.UtcNow))但是,我不知道为什么--如果我忽略了压缩,加密部分就会像预期的那样工作。我需要另一个库来执行压缩吗,
标记
发布于 2017-10-20 09:29:53
下面的调用中的null参数导致了这个问题:
pgpLiteralDataGenerator.Open(compressedStream, PgpLiteralData.Binary, null, data.Length, DateTime.UtcNow))这段代码是来自另一个项目的直接拷贝,但是在该项目中,B儿GURSCASTLESAPI是与iTextSharp一起引入的--我假设实现上有细微的差别。
https://stackoverflow.com/questions/46737400
复制相似问题