Introduktion

Den här artikeln beskrivs Samlad snabbkorrigering 2996568 som är tillgänglig för Microsoft.NET Framework 4.5,.NET Framework 4.5.1 och.NET Framework 4.5.2. Mer information om de problem som den samlade uppdateringen löser finns i avsnittet "Mer Information".Denna samlade snabbkorrigering är tillgänglig för följande operativsystem:

  • Windows Server 2008 R2 SP1

  • Windows 7 SP1

  • Windows Server 2008 SP2

  • Windows Vista SP2

Lösning

En snabbkorrigering är nu tillgänglig från Microsoft. Den är emellertid avsedd att åtgärda det problem som beskrivs i den här artikeln. Använd den bara på datorer där detta problem uppstår.Lös problemet genom att kontakta Microsoft support för att få snabbkorrigeringen. En fullständig lista över telefonnummer till Microsoft Customer Support Services och information om supportkostnader finns på följande Microsoft-webbplats:

http://support.microsoft.com/contactus/?ws=supportObs! I särskilda fall avbryts de avgifter som är normala för supportsamtal om en supporttekniker anser att en särskild uppdatering kan lösa ditt problem. De vanliga supportkostnaderna gäller för övriga supportfrågor och problem som inte berör den särskilda uppdateringen.

Mer Information

Förutsättningar

Om du vill installera den här snabbkorrigeringen måste du har.NET Framework 4.5,.NET Framework 4.5.1 och.NET Framework 4.5.2 installerat.

Krav på omstart

Du måste starta om datorn när du har installerat den här snabbkorrigeringen om alla berörda filer används. Vi rekommenderar att du stänger alla.NET Framework-baserade program innan du installerar den här snabbkorrigeringen.

Ersättningsinformation för Hotfix

Det här snabbkorrigeringspaketet ersätter inte en tidigare utgiven snabbkorrigering.

Den här samlade uppdateringen löser problem

Problem 1

Den här snabbkorrigeringen löser följande två trådade problem i System.IO.Packaging när du använder.NET Framework 4.5,.NET Framework 4.5.1 och.NET Framework 4.5.2.

  • Ett dödläge kan uppstå när du använder stora förpackningar på separata trådar. System.IO.Packaging använder IsolatedStorage för paket som är större än 10 MB (Megabyte). När två eller flera trådar använder stora förpackningar, kan dödläge uppstå, även om paketen är oberoende. Dödläge omfattar två trådar. En väntar i IsolatedStorageFile.Lock medan den andra väntar i en annan metod i klassen IsoloatedStorageFile . Problemet är åtgärdat genom att synkroniseringen till System.IO.Packaging för att undvika problem i IsolatedStorageFile.

  • Undantag kan inträffa när du hämtar PackageProperties från paket som öppnas i separata trådar även om paketen är oberoende. De vanligaste anropsstackar som härrör från detta är följande:System.Xml.XmlException: Unrecognized root element in Core Properties part. Line 2, position 2. atMS.Internal.IO.Packaging.PartBasedPackageProperties.ParseCorePropertyPart(PackagePart part) atSystem.IO.Packaging.Package.get_PackageProperties() System.ArgumentOutOfRangeException: Specified argument was out of the range of valid values. Parameter name: id atMS.Internal.IO.Packaging.PartBasedPackageProperties.ParseCorePropertyPart(PackagePart part) atSystem.IO.Packaging.Package.get_PackageProperties() Det här problemet orsakas av konkurrens på en intern resurs och löses genom att ge en kopia av resursen för varje paket.

Problem 2

Ett program för Windows Presentation Foundation (WPF) kan använda stora mängder minne när den tar emot många begäranden för tjänsten UIAutomation . Minnet som hör till de objekt som är från namnområdet System.Threading . Detta inkluderar System.Threading.CancellationTokenSource, System.Threading.TimerQueueTimer, System.Threading.Timeroch flera relaterade klasser.Dessa är de objekt som har allokerats för WPF när WPF tar emot en begäran om UIAutomation verksamhet. De övergår till slut tills tidsgränsen för timeout för begäran upphör (vanligtvis tre minuter). Om begäranden tas emot snabbt programmet verkar läcker minne eller använda mer minne än vad är rimliga (så mycket som 500 MB).Problemet kan lösas genom att släppa objekt när begäran slutförs, i stället för timeout deadline.Problem 3I WPF-program när du skriver in text med hjälp av koreansk Input Method Editor (IME) ändras egenskapen Text för en redigerbar ComboBox inte på rätt sätt i vissa fall.Det här problemet kan uppvisa olika symptom och som beror på hur programmet (eller kontroll författare) har konfigurerat ComboBox. Till exempel:

  • När du skriver och fliken bort (eller flytta fokus till en annan kontroll) återgår visas texten i ComboBox till den tomma strängen eller till det värde den hade innan de skriver.

  • Funktionen TextSearch i ComboBox fungerar felaktigt. Matchar inte det prefix som har angetts eller den matchar ett relaterade objekt.

Problemet kan lösas genom en ändring av logik efter tidpunkten för den koreanska IME: N som skiljer sig något från andra IME-program.Problemet 4När du utför en dra-och-släpp-åtgärden i WPF-program med en touch ignoreras nästa touch gesten.Problemet kan lösas genom att återställa touch input hanterare interna tillstånd när dra-och-släpp-åtgärden har slutförts. På så sätt kan beräknar den positionen för nästa touch gesten korrekt.Problemet 5En ny AuthenticationManagers -implementering kan aktiveras också att få betydande prestanda när du arbetar med anpassade IAuthenticationModules.Obs! Större säkerhetsrisker visas om koden inte är avsett att vara trådsäkert. Den största förändringen finns på PreAuthenticate och autentisera metoder. Tidigare garanterades den koden kördes seriellt (global Lås togs). Inga lås vidtas i den nya implementeringen och Kundkod måste garantera säkerhet tråd.Med den nya implementeringen kan dessutom cachestorleken PrefixLookup kontrolleras via registret.Följande registernycklar kan användas för att aktivera och konfigurera den maximala längden på PrefixLookup:

  • Global konfiguration[HKEY_LOCAL_MACHINE\SOFTWARE[\Wow6432Node]\Microsoft\.NETFramework\v4.0.30319]"System.Net.AuthenticationManager.HighPerformance"=dword:00000001"System.Net.AuthenticationManager.PrefixLookupMaxCount"=dword:00010000

  • Lokala programkonfiguration[HKEY_LOCAL_MACHINE\SOFTWARE[\Wow6432Node]\Microsoft\.NETFramework\v4.0.30319\System.Net.AuthenticationManager.HighPerformance]"c:\myapp\myapp.exe"=dword:00000001[HKEY_LOCAL_MACHINE\SOFTWARE[\Wow6432Node]\Microsoft\.NETFramework\v4.0.30319\System.Net.AuthenticationManager.PrefixLookupMaxCount]"c:\myapp\myapp.exe"=dword:00010000

Globala inställningar har högre prioritet än lokala inställningar. Globala och lokala inställningar kan blandas. PrefixLookupMaxCount påverkas inte om global eller lokal HighPerformance inställningen anges till 1 för DWORD.Problemet 6Anta att du kör ett program som bygger på.NET Framework 4.5,.NET Framework 4.5.1 och.NET Framework 4.5.2. Programmet genereras ett undantag i en hanterad metoden anropades från maskinkod som skickades ett COM-gränssnitt som referens. I den här situationen kan programmet krascha.Exempel: ett program som är skrivet i tillägget VB6 anropar en C#-DLL. Om program och DLL kompilerat i release läge när ett undantagsfel i C#-kod, ett åtkomstfel uppstår och programmet kraschar.Problemet 7När arbetsflödet XAML-baserade projekt tar längre tid än standardtiden (fem minuter) för remote-objekt som definieras av uppgifter för att bygga på XAML, visas ett felmeddelande av följande slag:

C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Microsoft.XAML.TARGETS(193,5): fel XC1000: XC1020: Build-fel inträffade i XAML MSBuild-aktiviteten: ' Object ' / cc8d6dcf_823f_4ce0_aaad_fb1d3f85e42b/mzr1is8dfgy6yqtpnhegu6pt_4.rem' har kopplats från eller så finns inte på servern. "

När du har installerat snabbkorrigeringen kan du definiera egna lånetid (i minuter) genom att definiera miljövariabeln som heter XamlBuildTaskRemotingLeaseLifetimeInMinutes.Om du vill ställa in miljövariabeln för MSBuild i en projektfil måste du inkludera följande information i projektet:<Project ...> <UsingTask TaskName="MySetEnv" TaskFactory="CodeTaskFactory" AssemblyFile="$(MSBuildToolsPath)\Microsoft.Build.Tasks.v4.0.dll" > <ParameterGroup> <Name Required="true" /> <Value Required="false" /> </ParameterGroup> <Task> <Code Type="Fragment" Language="cs">System.Environment.SetEnvironmentVariable(Name, Value);</Code> </Task> </UsingTask>...... <Target Name="BeforeBuild"> <MySetEnv Name="XamlBuildTaskRemotingLeaseLifetimeInMinutes" Value="1440" /> </Target> <Target Name="AfterBuild"> <MySetEnv Name="XamlBuildTaskRemotingLeaseLifetimeInMinutes" Value="" /> </Target></Project> Aktivitetsnamn i det här exemplet är MySetEnv. Det kan sättas till valfri sträng som är giltig för aktivitetsnamn. I det här exemplet anger lånetiden till 1 440 minuter (en dag) innan skapandet av projektet och ställer in den på null efter byggnaden. Om det finns flera projekt som kräver för att förlänga lånetiden, måste den här konfigurationen i varje projekt.Problem 8När du använder AJAX återanslående på en sida, omdirigeras ibland återanslåendet till en annan URL. Du kan få RedirectLocation i HttpModule genom HttpContext.Items["System.Web.UI.PageRequestManager:AsyncPostBackRedirectLocation"].

Behöver du mer hjälp?

Vill du ha fler alternativ?

Utforska prenumerationsförmåner, bläddra bland utbildningskurser, lär dig hur du skyddar din enhet med mera.

Communities hjälper dig att ställa och svara på frågor, ge feedback och få råd från experter med rika kunskaper.