在基于.NET Framework 2.0 的应用程序中使用 AesCryptoServiceProvider 类发生内存泄漏


症状


当您运行 Microsoft 的基于.NET Framework 2.0 的应用程序使用AesCryptoServiceProvider类时,发生内存泄漏。

原因


由于以下两个原因发生此问题。

原因 1

两个AesCryptoServiceProvider对象中的父/子关系中的本机句柄都属于独立托管的对象。父句柄被释放后的第一个,系统不能跟踪,然后释放归子句柄的所有内存。

原因 2

AesCryptoServiceProvider对象泄漏中的 ICryptoTransform 接口的对象的引用。

解决方案


修补程序信息

受支持的修补程序现已从 Microsoft 推出。但是,它旨在纠正本文介绍的问题。它仅应用于正经历此特定问题的系统。

若要解决此问题,请联系 Microsoft 客户支持服务以获取此修复程序。Microsoft 客户支持服务的电话号码以及有关支持费用的信息的完整列表,请访问下面的 Microsoft 网站:注意: 在特殊情况下,如果 Microsoft 支持专业人员确定某个特定的更新能够解决您的问题,可能取消的通常情况下收取的电话支持服务费用。照常收取支持费用将应用于其他支持问题和对于特定更新无法解决的问题。

若要从 MSDN 代码库中下载此修补程序,请访问下面的 Microsoft 网站︰注意:MSDN 代码库显示获取此修复程序的语言。如果看不到列出的语言,这是因为代码库的资源页不可用这种语言。

您还可以从以下 Microsoft 网站下载此修补程序︰

系统必备组件

您必须具有.NET Framework 2.0 Service Pack 2 (SP2) 或 Microsoft.NET Framework 3.5 Service Pack 1 (SP1) 要应用此修补程序的安装。

重启要求

不需要重新启动计算机,如果受影响的文件未被使用在应用此修复程序后。

修补程序替换信息

此修补程序不替换任何其他修补程序。

文件信息

此修复程序的英文版具有的文件属性 (或更新的文件属性)在下表中列出。日期和为这些文件的时间以协调世界时 (UTC) 列出。当您查看文件信息时,它将转换为本地时间。要了解 UTC 与本地时间之间的时差,请使用控制面板中的日期和时间项中的时区选项卡。
对于所有受支持的基于 x86 版本的 Windows Server 2003、 Windows xp、 Windows vista 和 Windows Server 2008 的
文件名称文件版本文件大小日期时间平台
System.core.dll3.5.30729.4530667,64801-Apr-201009:55x86
对于所有受支持的基于 x64 版本的 Windows Server 2003、 Windows xp、 Windows vista 和 Windows Server 2008 的
文件名称文件版本文件大小日期时间平台
System.core.dll3.5.30729.4530667,64801-Apr-201009:55x86
对于所有受支持的基于 x86 的 Windows 7 版本
文件名称文件版本文件

大小
日期时间平台
System.core.dll3.5.30729.5025667,64829-Apr-201023:55x86
对于所有受支持的基于 x64 版本的 Windows 7 以及 Windows Server 2008 R2
文件名称文件版本文件

大小
日期时间平台
System.core.dll3.5.30729.5025667,64830-Apr-201000:31x64
对于所有受支持的基于 IA-64 的 Windows Server 2008 R2 版本
文件名称文件版本文件

大小
日期时间平台
System.core.dll3.5.30729.5025667,64829-Apr-201023:50IA-64

状态


Microsoft 已经确认这是“适用于”一节中列出的 Microsoft 产品中的问题。