บทนำ

บทความนี้อธิบายถึงการรวบรวมโปรแกรมแก้ไขด่วน 2996568 ที่พร้อมใช้งานสำหรับ Microsoft .NET Framework 4.5, .NET Framework 4.5.1 และ.NET Framework 4.5.2 สำหรับข้อมูลเพิ่มเติมเกี่ยวกับปัญหาที่รวบรวมโปรแกรมแก้ไขด่วนแก้ไข ดูส่วน "ข้อมูลเพิ่มเติม"ยกเลิกโปรแกรมแก้ไขด่วนนี้จะพร้อมใช้งานสำหรับระบบปฏิบัติการต่อไปนี้:

  • Windows Server 2008 R2 SP1

  • Windows 7 SP1

  • Windows Server 2008 SP2

  • Windows Vista SP2

การแก้ปัญหา

โปรแกรมแก้ไขด่วนจะพร้อมใช้งานได้ในขณะนี้จาก Microsoft อย่างไรก็ตาม มีจุดมุ่งหมายที่จะแก้ไขเฉพาะปัญหาที่บทความนี้อธิบายไว้เท่านั้น นำวิธีนี้ไปใช้กับระบบที่ประสบกับปัญหาที่เฉพาะเจาะจงเท่านั้นหากต้องการแก้ไขปัญหานี้ ให้ติดต่อฝ่ายบริการสนับสนุนลูกค้าของ Microsoft เพื่อขอรับโปรแกรมแก้ไขด่วน สำหรับรายชื่อทั้งหมดของหมายเลขโทรศัพท์ของบริการการสนับสนุนลูกค้าของ Microsoft และข้อมูลเกี่ยวกับค่าใช้จ่ายสนับสนุน แวะไปที่เว็บไซต์ของ Microsoft ต่อไปนี้:

http://support.microsoft.com/contactus/?ws=supportหมายเหตุ ในกรณีพิเศษ ค่าบริการที่เรียกเก็บตามปกติเมื่อโทรติดต่อฝ่ายสนับสนุนอาจจะยกเลิกได้หาก Microsoft Support Professional ตัดสินว่าโปรแกรมปรับปรุงที่เฉพาะเจาะจงจะแก้ไขปัญหาของคุณได้ ค่าใช้จ่ายในการสนับสนุนตามปกติจะใช้กับคำถามและปัญหาในการสนับสนุนเพิ่มเติมซึ่งไม่สอดคล้องตามเกณฑ์สำหรับโปรแกรมปรับปรุงเฉพาะที่เกี่ยวข้อง

ข้อมูลเพิ่มเติม

ข้อกำหนดเบื้องต้น

เมื่อต้องการใช้โปรแกรมแก้ไขด่วนนี้ คุณต้องมี 4.5 Framework .NET, .NET Framework 4.5.1 หรือ.NET Framework 4.5.2 ที่ติดตั้ง

ข้อกำหนดการรีสตาร์ท

คุณต้องรีสตาร์ทคอมพิวเตอร์หลังจากใช้โปรแกรมแก้ไขด่วนนี้ถ้ามีการใช้แฟ้มที่ได้รับผลกระทบใด ๆ เราขอแนะนำให้ คุณปิดโปรแกรมประยุกต์ที่ใช้.NET Framework ทั้งหมดก่อนที่จะใช้โปรแกรมแก้ไขด่วนนี้

ข้อมูลการแทนที่โปรแกรมแก้ไขด่วน

แพคเกจโปรแกรมแก้ไขด่วนนี้ไม่ได้แทนแพคเกจโปรแกรมแก้ไขด่วนที่ออกมาก่อนหน้านี้

การตัดสินค้าจากคลังที่แก้ไขยกเลิกโปรแกรมแก้ไขด่วนนี้

ปัญหาที่ 1

โปรแกรมแก้ไขด่วนนี้แก้ปัญหาเธรดที่สองต่อไปนี้ในSystem.IO.Packagingเมื่อคุณใช้ 4.5 Framework .NET, .NET Framework 4.5.1 หรือ.NET Framework 4.5.2

  • การล็อกตายอาจเกิดขึ้นเมื่อคุณใช้แพคเกจขนาดใหญ่บนเธรดที่แยกต่างหาก System.IO.Packagingใช้IsolatedStorageสำหรับหีบห่อที่มีขนาดใหญ่กว่า 10 เมกะไบต์ (MB) เมื่ออย่าง น้อยสองเธรดใช้แพคเกจขนาดใหญ่ การล็อกตายอาจเกิดขึ้น แม้ว่าจะไม่เกี่ยวข้องกับแพคเกจ การชะงักงันเกี่ยวข้องกับเธรดที่สอง หนึ่งกำลังรอในIsolatedStorageFile.Lockในขณะที่อีกกำลังรอในอีกวิธีหนึ่งในคลาสIsoloatedStorageFile ปัญหานี้ได้รับการแก้ไข โดยการเพิ่มการซิงโครไนส์System.IO.Packagingเพื่อหลีกเลี่ยงปัญหาในIsolatedStorageFile

  • ข้อยกเว้นอาจเกิดขึ้นเมื่อคุณเรียกใช้PackagePropertiesจากแพคเกจที่ถูกเปิดบนเธรดที่แยกจากกัน แม้ว่าแพคเกจเกี่ยวข้องกับงาน สแต็คการเรียกพบบ่อยที่สุดที่เกิดขึ้นจากนี้มีดังนี้: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() ปัญหานี้เกิดจากข้อขัดแย้งในทรัพยากรที่ใช้ร่วมกันภายใน และได้รับการแก้ไข โดยการให้สำเนาของทรัพยากรแต่ละแพคเกจ

ปัญหาที่ 2

แอพลิเคชันพื้นฐานในงานนำเสนอ Windows (WPF) ที่อาจใช้หน่วยความจำจำนวนมากเมื่อได้รับการร้องขอมากมายสำหรับบริการการใช้UIAutomation หน่วยความจำเป็นของวัตถุที่มาจากSystem.Threading namespace ซึ่งรวมถึงSystem.Threading.CancellationTokenSource, System.Threading.TimerQueueTimer, System.Threading.Timerและคลาสที่หลายอื่น ๆ ที่เกี่ยวข้องเหล่านี้คือวัตถุที่มีการปันส่วนในนามของ WPF เมื่อ WPF ได้รับการร้องขอสำหรับกิจกรรมUIAutomation พวกเขาในขั้นสุดท้ายจะปล่อยจนกระทั่งสิ้นสุดของการหมดเวลาสำหรับการร้องขอหมดอายุ (โดยทั่วไปสามนาที) ถ้าคำขอเข้ามาได้อย่างรวดเร็ว แอพลิเคชันที่ดูเหมือนจะ มีการรั่วหน่วยความจำ หรือใช้หน่วยความจำเพิ่มเติมมากกว่าที่เหมาะสม (มากเท่ากับ 500 MB)ปัญหานี้แก้ไขได้ โดยการปล่อยวัตถุเมื่อคำขอเสร็จสมบูรณ์แล้ว แทนที่จะรอการสิ้นสุดของการหมดเวลาปัญหาที่ 3ในโปรแกรมประยุกต์ WPF เมื่อคุณป้อนข้อความ โดยใช้การเกาหลี Input Method Editor (IME), คุณสมบัติข้อความของตัวแก้ไขComboBoxจะไม่เปลี่ยนแปลงอย่างถูกต้องในบางกรณีปัญหานี้อาจมีอาการที่แตกต่างกัน และขึ้นอยู่กับว่าแอพลิเคชัน (หรือผู้ควบคุม) ได้กำหนดค่าComboBox ตัวอย่างเช่น

  • หลังจากที่คุณพิมพ์ และแท็บเก็บ (หรือย้ายโฟกัสไปยังตัวควบคุมอื่น), ข้อความที่แสดงของComboBoxเปลี่ยน เป็นสายอักขระว่าง หรือเป็นค่าที่เหมือนก่อนที่จะพิมพ์

  • คุณลักษณะTextSearchของComboBoxทำงานอย่างไม่ถูกต้อง ไม่ตรงกับคำนำหน้าที่ถูกป้อน หรือตรงกับรายการไม่เกี่ยวข้อง

ปัญหานี้แก้ไขได้ โดยการแก้ไขตรรกะเพื่อให้เหมาะสมกับกำหนดเวลาของ IME ภาษาเกาหลีที่แตกต่างเล็กน้อยจาก Ime อื่น ๆปัญหาที่ 4หลังจากที่คุณสามารถใช้การสัมผัสเพื่อดำเนินการลาก และปล่อยในโปรแกรมประยุกต์ WPF รูปแบบลายเส้นแบบสัมผัสถัดไปจะถูกละเว้นไปปัญหานี้จะแก้ไขปัญหาได้ ด้วยการเรียกคืนสถานะภายในของตัวจัดการการป้อนข้อมูลด้วยการสัมผัสเมื่อเสร็จสิ้นการดำเนินการลาก และปล่อย ด้วยวิธีนี้ จะคำนวณทำได้อย่างถูกต้องตำแหน่งของรูปแบบลายเส้นแบบสัมผัสถัดไปปัญหาที่ 5ดำเนินการAuthenticationManagerใหม่สามารถถูกเปิดการใช้งานอีกทางหนึ่งคือเพื่อให้สามารถเพิ่มประสิทธิภาพได้มากเมื่อคุณทำงานกับIAuthenticationModulesที่กำหนดเองหมายเหตุ ความเสี่ยงด้านความปลอดภัยที่สำคัญรหัสถูกออกแบบมาเพื่อให้ปลอดภัยเธรดไม่ปรากฏขึ้น การเปลี่ยนแปลงลักษณะการทำงานหลักจะอยู่ในวิธีการPreAuthenticateและAuthenticate ก่อนหน้านี้ ได้มีการรับประกันว่า รหัสที่ถูกดำเนินการ serially (ล็อกสากลถ่าย) ในการดำเนินการใหม่ lock ไม่ถูกนำมา และรหัสลูกค้าต้องรับประกันความปลอดภัยของเธรดนอกจากนี้ กับการนำไปใช้ใหม่ ขนาดแคPrefixLookupสามารถควบคุมผ่านทางรีจิสทรีคุณสามารถใช้รีจิสทรีคีย์ต่อไปนี้เพื่อเปิดใช้งาน และกำหนดค่าความยาวสูงสุดของPrefixLookup:

  • กำหนดค่าส่วนกลาง[HKEY_LOCAL_MACHINE\SOFTWARE[\Wow6432Node]\Microsoft\.NETFramework\v4.0.30319]"System.Net.AuthenticationManager.HighPerformance"=dword:00000001"System.Net.AuthenticationManager.PrefixLookupMaxCount"=dword:00010000

  • การตั้งค่าคอนฟิกแอพลิเคชันภายในเครื่อง[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

ตั้งค่าส่วนกลางมีลำดับความสำคัญเหนือการตั้งค่าโปรแกรมประยุกต์ภายในเครื่อง การตั้งค่าสากล และเฉพาะแอพลิเคชันสามารถผสมผสานกัน PrefixLookupMaxCountจะไม่ได้รับผลกระทบถ้าการตั้งค่าHighPerformanceท้องถิ่น หรือสากลโปรแกรมประยุกต์ถูกตั้งค่าเป็นDWORD 1ปัญหาที่ 6สมมติว่า คุณเรียกใช้โปรแกรมประยุกต์ที่เป็นไปตาม 4.5 Framework .NET, .NET Framework 4.5.1 หรือ.NET Framework 4.5.2 แอพลิเคชันแสดงข้อยกเว้นในวิธีการที่มีการจัดการที่ถูกเรียกจากรหัสท้องถิ่น และถูกส่งผ่าน COM อินเตอร์เฟส โดยการอ้างอิง ในสถานการณ์นี้ แอพลิเคชันอาจล้มเหลวตัวอย่าง: โปรแกรมประยุกต์ที่ถูกเขียนใน VB6 เรียกใช้ DLL C# ถ้าแอพลิเคชันและ DLL จะถูกคอมไพล์ในโหมดการนำออกใช้ เมื่อเกิดข้อยกเว้นจะเกิดขึ้นในโค้ด C# การละเมิดการเข้าถึงเกิดขึ้น และแอพลิเคชันล้มเหลวปัญหาที่ 7เมื่อโครงการใช้ XAML ลำดับงานใช้เวลายาวเวลาเริ่มต้นค่าเช่า (5 นาที) ของวัตถุระยะไกลที่กำหนด โดยงานสำหรับการสร้าง XAML คุณได้รับข้อความแสดงข้อผิดพลาดที่คล้ายกับต่อไปนี้:

C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Microsoft.Xaml.targets(193,5): ข้อผิดพลาด XC1000: XC1020: เกิดข้อผิดพลาดในการสร้างในงาน XAML MSBuild: ' วัตถุ ' / cc8d6dcf_823f_4ce0_aaad_fb1d3f85e42b/mzr1is8dfgy6yqtpnhegu6pt_4.rem' ถูกยกเลิก หรือไม่มีอยู่ในเซิร์ฟเวอร์'

หลังจากที่คุณใช้โปรแกรมแก้ไขด่วนนี้ คุณสามารถกำหนดเวลาการเช่าของคุณเอง (เป็นนาที) โดยการกำหนดตัวแปรของสภาพแวดล้อมที่มีชื่อว่าXamlBuildTaskRemotingLeaseLifetimeInMinutesเมื่อต้องการตั้งค่าตัวแปรของสภาพแวดล้อมในแฟ้มโครงการสำหรับ MSBuild คุณจำเป็นต้องรวมข้อมูลต่อไปนี้ในแฟ้มโครงการของคุณ:<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> TaskNameในตัวอย่างนี้คือMySetEnv คุณสามารถตั้งค่าสายอักขระใด ๆ ที่ถูกต้องสำหรับชื่องาน ตัวอย่างนี้กำหนดเวลาเช่าเป็นค่าเท่ากับ 1440 นาที (หนึ่งวัน) ก่อนอาคารของโครงการ และตั้งค่าให้เป็น null หลังจากอาคาร ถ้ามีหลายโครงการที่ต้องการยืดเวลาค่าเช่า แต่ละโครงการต้องตั้งค่าคอนฟิกนี้ปัญหาที่ 8เมื่อคุณใช้ AJAX หนึ่งการส่งคืนในเพจ บางครั้งหนึ่งการส่งคืนที่ถูกเปลี่ยนเส้นทางไปยัง URL อื่น คุณสามารถขอรับRedirectLocationในHttpModuleผ่านHttpContext.Items["System.Web.UI.PageRequestManager:AsyncPostBackRedirectLocation "]ได้

ต้องการความช่วยเหลือเพิ่มเติมหรือไม่

ต้องการตัวเลือกเพิ่มเติมหรือไม่

สํารวจสิทธิประโยชน์ของการสมัครใช้งาน เรียกดูหลักสูตรการฝึกอบรม เรียนรู้วิธีการรักษาความปลอดภัยอุปกรณ์ของคุณ และอื่นๆ

ชุมชนช่วยให้คุณถามและตอบคําถาม ให้คําติชม และรับฟังจากผู้เชี่ยวชาญที่มีความรู้มากมาย