.NET Framework 4.8中X509Certificate2Collection是否需要清理?
.NET Framework 4.8 中 X509Certificate2Collection 的资源清理问题
在.NET Framework 4.8中,X509Certificate2实现了IDisposable接口,必须调用Dispose方法或放在using {}块中使用实例。那X509Certificate2Collection该如何处理?比如加载包含证书链的.pfx文件的代码如下:
byte[] data = File.ReadAllBytes("path/to/my/chain.pfx"); X509Certificate2Collection chain = new X509Certificate2Collection(); chain.Import(data, "hunter2", X509KeyStorageFlags.Ephemeral); // do some work with the certificates
是否需要对其进行清理?比如是否需要遍历链中的证书调用Reset或Dispose?
直接给结论:
X509Certificate2Collection本身也实现了IDisposable接口,最省心的做法是把它放进using块里,这样集合会自动清理内部所有的X509Certificate2实例,完全不用手动遍历调用Dispose或Reset。- 如果没使用
using块,那就手动调用集合的Dispose方法,同样会自动处理所有成员证书的资源释放,不用逐个操作。 - 特殊情况:如果你从集合中取出某个证书,并且在集合被销毁后还需要继续使用这个证书,那你得单独对这个取出的证书调用
Dispose;但如果只是在集合的生命周期内使用证书,集合的Dispose会搞定一切。
内容的提问来源于stack exchange,提问作者TheNextman
相关产品推荐
相关产品推荐

