2013 年 8 月 13 日本文已更新。我们建议您应用“解决方案”部分提及的已更新的安全更新。
依赖于部分信任主机的 Microsoft .NET Framework 4 应用程序在某些情况下可能出错。Microsoft SQL Server 2012 中的 SQL Server CLR (SQLCLR) 功能使用这类部分信任主机。(此功能允许使用托管代码编写存储过程。)因此,使用 SQL Server 2012 构建的应用程序可能会受影响。
我们目前发现 Microsoft System Center 2012 Configuration Manager 和 Microsoft Dynamics CRM 2011 会受到此问题影响。
例如,如果您的 .NET Framework 4.0 客户端使用诸如 SQL Server 2012 或 Internet 信息服务等部分信任主机中的 System.Data.SqlClient 命名空间,那么当您调用 SqlConnection.Open 方法时,将收到以下异常:
System.TypeInitializationException:“System.Data.SqlClient.SqlConnection”的类型初始值引发异常。---> System.TypeInitializationException:“System.Data.SqlClient.SqlConnectionFactory”的类型初始值引发异常。---> System.TypeInitializationException:“System.Data.SqlClient.SqlPerformanceCounters”的类型初始值引发异常。---> System.MethodAccessException:使用“System.Configuration.TypeUtil.CreateInstanceRestricted(System.Type, System.Type)”方法访问“System.Diagnostics.SwitchElementsCollection..ctor()”方法的尝试失败。
以下场景说明了此一般问题可能的表现方式。
场景 1
站点之间的数据库复制与软件更新点同步无法在 System Center 2012 Configuration Manager 中进行。客户端位置内容请求在 Microsoft System Center Configuration Manager 2007 中没有返回任何分发点。
有关此问题的详细信息,请访问以下 Microsoft 网站:
场景 2
您拥有一个在 Microsoft CRM 2011 中运行的插件。在这种情况下,对特定类方法调用 System.Diagnostics 命名空间可能会引发以下异常:
System.MethodAccessException:使用“System.Configuration.TypeUtil.CreateInstanceRestricted(System.Type, System.Type)”方法访问“System.Diagnostics.AssertSection..ctor()”方法的尝试失败。
症状
此问题是由 .NET Framework 4 中错误优化的函数引起的。
原因
若要解决此问题,请应用已更新的安全更新 2840628.
解决方案
适用于
此文章适用于以下内容:
-
Microsoft .NET Framework 4,与以下版本一起使用时:
-
Windows 7 Service Pack 1
-
Windows Server 2008 R2 Service Pack 1
-
Windows Vista Service Pack 2
-
Windows Server 2008 Service Pack 2
-
Windows XP Service Pack 3
-
Windows Server 2003 Service Pack 2
-