Hotfix rollup 2783808 for the .NET Framework 4.5 in Windows 7, Windows 7 SP1, Windows 2008 R2, Windows 2008 R2 SP1, Windows 2008 SP2, and Windows Vista SP2


This article describes hotfix rollup 2783808 for the Microsoft .NET Framework 4.5 Service Pack 2 (SP2) in Windows 7, Windows 7 Service Pack 1 (SP1), Windows 2008 R2, Windows 2008 R2 SP1, Windows 2008 SP2, and Windows Vista SP2. This hotfix rollup is available to fix several issues in the.NET Framework 4.5. For more information about the issues that the hotfix resolves, see the "Issues that this hotfix rollup resolves" section.

More Information

Hotfix Information

A supported hotfix is now available from Microsoft. However, it is intended to correct only the problem that this article describes. Apply it only to systems that are experiencing this specific problem.

To resolve this problem, contact Microsoft Customer Support Services to obtain the hotfix. For a complete list of Microsoft Customer Support Services telephone numbers and information about support costs, visit the following Microsoft website:Note In special cases, charges that are ordinarily incurred for support calls may be canceled if a Microsoft Support Professional determines that a specific update will resolve your problem. The usual support costs will apply to additional support questions and issues that do not qualify for the specific update in question.


To apply this hotfix, you must have the.NET Framework 4.5 SP1 installed in Windows 7, Windows 7 SP1, Windows 2008 R2, Windows 2008 R2 SP1, Windows 2008 SP2, or Windows Vista SP2.

Restart requirement

You must restart the computer after you apply this hotfix if any affected files are being used. We recommend that you close all .NET Framework applications before you apply this hotfix.

Hotfix replacement information

This hotfix package does not replace a previously released hotfix package.
File information

Issues that this hotfix rollup resolves

Common language runtime (CLR) issues

Issue 1

When a .NET Framework 4.5 application tries to run background garbage collection on a computer that has low memory, a deadlock may occur.

Issue 2

The PerformanceCounterCategory.GetCategories method cannot return a list of performance counter categories on some operating systems that are using non-English locales. Additionally, if a .NET Framework application runs code that resembles the following to enumerate performance counter categories, no value is returned: 
PerformanceCounterCategory[] categories;
categories = PerformanceCounterCategory.GetCategories();
Console.WriteLine(categories.Length + " categories are registered on this computer");
After you apply the hotfix, you must add the following new LocalizedPerfCounter configuration key in the application configuration file for your .NET Framework application: 
<add key="LocalizedPerfCounter" value="true" />

Windows Communication Foundation (WCF) issues

Issue 1

Assume that there is an application that uses the System.Xml.XmlDictionaryReader WCF class to read UTF-8 encoded Unicode characters. When the application reads certain Unicode characters that fall within a certain range, the read process may be slow. 

Note For more information about the System.Xml.XmlDictionaryReader class, go to the following MSDN website:

Issue 2

On a computer that is running the .NET Framework 4.5 or an earlier version, WCF applications cannot access a client certificate if the HttpsTransportBindingElement.RequireClientCertificate property is set to FALSE. When an application tries to access client certificates, WCF operates in one of the following modes:
  • require or reject
  • don’t require and don’t validate
In this situation, you cannot create an application for which certificate checking is permissive (for example, you cannot create an application that uses the don’t require certificates but validate if provided mode). This hotfix enables the application to add a per-endpoint setting that provides the client certificate to the WCF applications if the client provides the certificate. However, the certificate is optional. Connections will not be rejected if a certificate is not provided. For example, a website may try to use forms authentication to validate an access attempt on a server, and to grant additional permissions if the presence of a client certificate is presented to the server.

To develop the application, create an EndpointBehavior behavior, and then add the behavior into a binding of the endpoint. For example, you run the following code to create and to add the behavior:
class ValidateOptionalClientCertificateBehavior : IEndpointBehavior
private const string ValidateOptionalClientCertificates = "wcf:HttpTransport:ValidateOptionalClientCertificates";

public void AddBindingParameters(ServiceEndpoint endpoint, BindingParameterCollection bindingParameters)
IDictionary<string, object> endpointSettings = bindingParameters.Find<IDictionary<string, object>>();

if (endpointSettings == null)
endpointSettings = new Dictionary<string, object>(StringComparer.OrdinalIgnoreCase);

if (endpointSettings.ContainsKey(ValidateOptionalClientCertificates))
endpointSettings[ValidateOptionalClientCertificates] = true;
endpointSettings.Add(ValidateOptionalClientCertificates, true);

public void ApplyClientBehavior(ServiceEndpoint endpoint, ClientRuntime clientRuntime)

public void ApplyDispatchBehavior(ServiceEndpoint endpoint, EndpointDispatcher endpointDispatcher)

public void Validate(ServiceEndpoint endpoint)
if (endpoint.ListenUri.Scheme != "https")
throw new InvalidOperationException();
Alternatively, you can add the following endpoint setting to the bindingParameters collection:
string ValidateOptionalClientCertificatesString = "wcf:HttpTransport:ValidateOptionalClientCertificates";
Dictionary<string, object> endpointSettings = new Dictionary<string, object>();
endpointSettings.Add(ValidateOptionalClientCertificatesString, true);

Issue 3

When you run a WCF service that supports WS-Discovery over User Datagram Protocol (UDP) on a server, you may experience one or more of the following issues:
  • CPU usage increases unexpectedly on the server.
  • Multicast traffic is larger than expected.
  • Many SOAP Fault messages are observed on a network where .NET Framework 4.5 is deployed on all or a subset of computers.
This hotfix prevents the SOAP Fault messages from being returned from a UDP endpoint if a WS-Discovery multicast message is received on an endpoint that is not configured for WS-Discovery.

Note These issues may occur even if the service was not compiled to target the .NET Framework 4.5. These issues might occur in an environment or network in which the .NET Framework 4.5 is present on one or more endpoints.

Windows Presentation Foundation (WPF) issues

Issue 1

Poor printing performance occurs when you use a.NET Framework 4.5-based WPF service to print to a Graphic Device Interface (GDI) printer on an operating system. This issue occurs if the following conditions are true:
  • The operating system that hosts the service uses a non-English locale.
  • The operating system has one of the following products installed:
    • WPF version 4.0
    • WPF version 4.5
    • WPF version 3.5 and the hotfix that is described in the following Microsoft Knowledge Base article (or an upgrade hotfix that includes this hotfix):
      980294 Characters in the Barcode font are printed in the Wingdings font in an XPS document that is created by using the .NET Framework 3.0
  • You print a document that has many blocks of text.
This issue occurs because a lookup operation occurs every time the printing process calls a block of text to find the GDI font that is used to display the text. The resource usage of the lookup operation is increased by applying the hotfix that is distributed in KB980294, WPF version 4.0, and WPF version 4.5. Additionally, the resource usage of the lookup operation dominates the overall resource usage of the printing process. This hotfix resolves a known issue in the logic that caches the lookup operation results. After you apply the hotfix, the resource usage of the lookup operation occurs once per GDI font instead of occurring once per block of text.

Issue 2

Consider the following scenario:
  • You have a .NET Framework 4.5-based application that contains an editable WPF control. The control uses an Input Method Editor (IME).
  • You input text into the control.
  • The control can change the text that is input. The following are examples of this behavior:
    • Assume that you have a TextBox control has the data-bound Text property. The update source trigger for a TextBox.Text binding of the property is set to PropertyChanged. As you input the text, it is sent to a property of an underlying data item that is described in the path of the binding. Additionally, the text can be replaced with a different string by the data item itself, or by the converters that are involved in the binding.
    • Assume that you have an editable combo box control with text-search setting enabled. As you enter text, the combo box control tries to match the text against the list of available options. If the control finds an option that begins with the text,the text will be replaced by the full text of the matching option.
  • You enable the IME to send a WM_IME_CHAR message to a WPF application when the control is in the "text has been modified by the control" state.

    Note The exact sequence of characters that causes this message differs greatly between different IMEs. Some IMEs never send this message at all.
In this scenario, the .NET Framework 4.5-based application may crash together with a System.InvalidOperationException exception.

To resolve this issue, apply the hotfix. This hotfix also resolves a specific issue in which Visual Studio 2012 crashes when you edit a Team Foundation Server (TFS) work item together with the Engkoo Pinyin IME enabled. The following is a detailed description of that issue:

Assume that you input text into the "Assigned to" field of a work item in Visual Studio 2012. When you then press Enter after you input the text, the Engkoo IME sends the WM_IME_CHAR message. Therefore, Visual Studio 2012 crashes.

Note Inputting text intoother fields of the TFS work item may also cause this issue.
Note This issue also occurs in WPF version 4.0 or an earlier version of WPF. However, the fix applies only to WPF version 4.5.
Issue 3

Consider the following scenario:
  • You have a WPF application that declares a data-bound property. The data-bound property contains a binding that has a complex path. For example, the binding has the following path:
    {Binding Path=A.B.C.D}
  • You create a data model that raises a PropertyChanged notification for some components of the path on a worker thread. For example, the worker thread raises a change notification for property C.

    • The worker thread can be any thread that differs from the UI thread.
    • The UI thread is the thread that was declared by the binding.
  • Before the UI thread processes the PropertyChanged notification, the data model raises another PropertyChanged notification for an earlier component of the path. For example, you have a thread raises a change notification for property A.

    Note The second PropertyChanged notification can occur on any thread. This includes the UI thread.
In this case, the second notification is ignored. Additionally, data loss occurs. For example, property D obtains the original value of property A. However, the expected result is that property D obtains the changed value of property A.

Note This issue may also affect an earlier version than WPF version 4.5. However, the fix applies only to WPF version 4.5.

Issue 4

Consider the following scenario:
  • You have a WPF application that runs code to declare a TextBlock control, and the code resembles the following:
    <TextBlock TextTrimming="CharacterEllipses" TextWrapping="NoWrap">
  • You input text to a long string that is 9600 characters or longer.
  • You run your application on a computer that is running WPF version 4.5.
In this scenario, the TextBlock control displays several lines of text, and each line of text ends with ellipses. For example, the number of lines that are displayed is n/9600.

Note n is a placeholder that represents the length of the original text. However, the expected result is that the TextBlock control displays a single line of text that ends with the ellipses.

Identyfikator artykułu: 2783808 — ostatni przegląd: 13.06.2013 — zmiana: 1

Microsoft .NET Framework 4.5