Sign in with Microsoft
Sign in or create an account.
Select a different account.
You have multiple accounts
Choose the account you want to sign in with.

This article describes hotfix rollup 3088958 that's available for the Microsoft .NET Framework 4.5.2, the .NET Framework 4.5.1, and the .NET Framework 4.5. For more information about the issues that the hotfix rollup fixes, see the "Issues that this hotfix rollup fixes" section.

The Web Installer is a small package (less than one megabyte) that automatically determines and downloads only the components that are applicable for a particular platform.  


A supported hotfix is now available from Microsoft. However, it's 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 get the hotfix. For a complete list of Microsoft Customer Support Services telephone numbers and information about support costs, visit the following Microsoft website: 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 fix your problem. The usual support costs will apply to additional support questions and issues that don't qualify for the specific update in question.

Note To verify the hotfix update version, check the value of the Release keyword to determine the installed version. To be forward-compatible, you can check for a value that is greater than or equal to the value that is listed in the following table.

Hotfix Rollup Version

Value of the Release DWORD

Hotfix rollup 3088958 for the .NET Framework 4.5 and later versions of the .NET Framework


For more information about how to determine the .NET Framework versions, see How to: Determine Which .NET Framework Versions Are Installed.

More Information


To apply this hotfix, you must have the .NET Framework 4.5.2, the .NET Framework 4.5.1, or the .NET Framework 4.5 installed.

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-based applications before you apply this hotfix.

Hotfix replacement information

This hotfix package doesn't replace a previously released hotfix package.

Issues that this hotfix rollup fixes

Issue 1

This is an update to support the new Georgian Lari symbol. The country of Georgia has introduced a new currency symbol for the Lari, but the currency name isn't changed. The new currency symbol has also been added to the Unicode standard. This update makes sure that the correct currency symbol is displayed by the .NET Framework based on system locale settings.

Issue 2

This hotfix rollup fixes an issue with touch-enabled Windows Presentation Foundations (WPF) applications that are running in the same process but targeting two different .NET Framework versions. An example of this issue is two VSTO Office Add-ins written in WPF but targeted to different side-by-side .NET Frameworks. Users in this scenario could see strange touch behavior and/or crashes at various points during program execution.

The fix makes sure that proper DLLs are loaded and accessed in these scenarios, stopping any issues with touch behavior or program crashes.

Note If you use the .NET Framework 3.5 Service Pack 2 on your computer, install the corresponding fix for your version to fix this issue. 

Issue 3

If you have an ASP.NET website that’s running on a 32-bit version of the .NET Framework 4.6 or AMD64 version of the .NET Framework 4.6 platform with RyuJit disabled, you may experience w3wp crash because of unhandled ThreadAbortException. ​

When the crash happens, you can see the following log in Windows event log:

An unhandled exception occurred and the process was terminated.
Application ID: [ApplicationID]
Process ID: [ProcessID]
Exception: System.Threading.ThreadAbortException
Message: Thread was being aborted.
StackTrace: at System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest wr, HttpContext context)
at System.Web.Hosting.PipelineRuntime.ProcessRequestNotificationHelper(IntPtr rootedObjectsPointer, IntPtr nativeRequestContext, IntPtr moduleData, Int32 flags)
at System.Web.Hosting.PipelineRuntime.ProcessRequestNotification(IntPtr rootedObjectsPointer, IntPtr nativeRequestContext, IntPtr moduleData, Int32 flags)

Issue 4

Assume that you have a WCF client connecting to the WCF service by using WCF Routing Service. If the end service raises any unexpected exception that's not a type of FaultException or the configure changes, WCF Routing Service may not route subsequent requests to the end service.

When this issue occurs, you receive the following exception:

System.ServiceModel.ProtocolException: This channel can no longer be used to send messages as the output session was auto-closed due to a server-initiated shutdown. Either disable auto-close by setting the DispatchRuntime.AutomaticInputSessionShutdown to false, or consider modifying the shutdown protocol with the remote server.

Stack trace information:

at System.ServiceModel.Channels.ServiceChannel.PrepareCall(ProxyOperationRuntime operation, Boolean oneway, ProxyRpc& rpc)
at System.ServiceModel.Channels.ServiceChannel.SendAsyncResult.Begin()
at System.ServiceModel.Channels.ServiceChannel.BeginCall(String action, Boolean oneway, ProxyOperationRuntime operation, Object[] ins, TimeSpan timeout, AsyncCallback callback, Object asyncState)
at System.ServiceModel.Channels.ServiceChannelProxy.InvokeBeginService(IMethodCallMessage methodCall, ProxyOperationRuntime operation)
at System.ServiceModel.Channels.ServiceChannelProxy.Invoke(IMessage message)
at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type)
at System.ServiceModel.Routing.IRequestReplyRouter.BeginProcessRequest(Message message, AsyncCallback callback, Object state)
at System.ServiceModel.Routing.ClientFactory.RequestReplyClient.OnBeginOperation(Message message, AsyncCallback callback, Object state)
at System.ServiceModel.Routing.ClientFactory.RoutingClientBase`1.OperationAsyncResult.CallOperation()
at System.ServiceModel.Routing.ClientFactory.RoutingClientBase`1.OperationAsyncResult..ctor(RoutingClientBase`1 parent, Message requestMessage, Transaction transaction, AsyncCallback callback, Object state)
at System.ServiceModel.Routing.ClientFactory.RoutingClientBase`1.BeginOperation(Message message, Transaction transaction, AsyncCallback callback, Object state)
at System.ServiceModel.Routing.ProcessRequestAsyncResult`1.StartProcessing()
at System.ServiceModel.Routing.ProcessRequestAsyncResult`1..ctor(RoutingService service, Message message, AsyncCallback callback, Object state)
at System.ServiceModel.Routing.RoutingService.BeginProcessRequest[TContract](Message message, AsyncCallback callback, Object state)
at System.ServiceModel.Routing.RoutingService.System.ServiceModel.Routing.IRequestReplyRouter.BeginProcessRequest(Message message, AsyncCallback callback, Object state)
at AsyncInvokeBeginBeginProcessRequest(Object , Object[] , AsyncCallback , Object )
at System.ServiceModel.Dispatcher.AsyncMethodInvoker.InvokeBegin(Object instance, Object[] inputs, AsyncCallback callback, Object state)

Need more help?

Expand your skills
Explore Training
Get new features first
Join Microsoft Insiders

Was this information helpful?

What affected your experience?

Thank you for your feedback!