การใช้การยกเลิกโปรแกรมแก้ไขด่วนนี้ ไปที่บทความฐานข้อมูลองค์ความรู้ต่อไปนี้ และดาวน์โหลดโปรแกรมแก้ไขด่วนถูกต้องค่าสะสม:
2925383ค่าสะสมของโปรแกรมแก้ไขด่วน 2925383 จะพร้อมใช้งานสำหรับ.NET Framework 4.5.1 ใน Windows
บทนำ
บทความนี้อธิบายถึงการรวบรวมโปรแกรมแก้ไขด่วน 2908385 ที่พร้อมใช้งานสำหรับ Microsoft .NET Framework 4.5.1 สำหรับข้อมูลเพิ่มเติมเกี่ยวกับปัญหาที่โปรแกรมแก้ไขด่วนแก้ไข ดูส่วน "ข้อมูลเพิ่มเติม"
ยกเลิกโปรแกรมแก้ไขด่วนนี้จะพร้อมใช้งานสำหรับระบบปฏิบัติการต่อไปนี้:-
Windows 8
-
Windows Server 2012
ข้อมูลเพิ่มเติม
ข้อมูลโปรแกรมแก้ไขด่วน
โปรแกรมแก้ไขด่วนจะพร้อมใช้งานได้ในขณะนี้จาก Microsoft อย่างไรก็ตาม มีจุดมุ่งหมายที่จะแก้ไขเฉพาะปัญหาที่บทความนี้อธิบายไว้เท่านั้น นำวิธีนี้ไปใช้กับระบบที่ประสบกับปัญหาที่เฉพาะเจาะจงเท่านั้น
หากต้องการแก้ไขปัญหานี้ ให้ติดต่อฝ่ายบริการสนับสนุนลูกค้าของ Microsoft เพื่อขอรับโปรแกรมแก้ไขด่วน สำหรับรายชื่อทั้งหมดของหมายเลขโทรศัพท์ของบริการการสนับสนุนลูกค้าของ Microsoft และข้อมูลเกี่ยวกับค่าใช้จ่ายสนับสนุน แวะไปที่เว็บไซต์ของ Microsoft ต่อไปนี้:http://support.microsoft.com/contactus/?ws=supportหมายเหตุ ในกรณีพิเศษ ค่าบริการที่เรียกเก็บตามปกติเมื่อโทรติดต่อฝ่ายสนับสนุนอาจจะยกเลิกได้หาก Microsoft Support Professional ตัดสินว่าโปรแกรมปรับปรุงที่เฉพาะเจาะจงจะแก้ไขปัญหาของคุณได้ ค่าใช้จ่ายในการสนับสนุนตามปกติจะใช้กับคำถามและปัญหาในการสนับสนุนเพิ่มเติมซึ่งไม่สอดคล้องตามเกณฑ์สำหรับโปรแกรมปรับปรุงเฉพาะที่เกี่ยวข้อง
ข้อกำหนดเบื้องต้น
เมื่อต้องการใช้โปรแกรมแก้ไขด่วนนี้ คุณต้องมี.NET Framework 4.5.1 ที่ติดตั้งอยู่
ข้อกำหนดการรีสตาร์ท
คุณต้องรีสตาร์ทคอมพิวเตอร์หลังจากใช้โปรแกรมแก้ไขด่วนนี้ถ้ามีการใช้แฟ้มที่ได้รับผลกระทบใด ๆ เราขอแนะนำให้ คุณปิดโปรแกรมประยุกต์ที่ใช้.NET Framework ทั้งหมดก่อนที่จะใช้โปรแกรมแก้ไขด่วนนี้
ข้อมูลการแทนที่โปรแกรมแก้ไขด่วน
แพคเกจโปรแกรมแก้ไขด่วนนี้ไม่ได้แทนแพคเกจโปรแกรมแก้ไขด่วนที่ออกมาก่อนหน้านี้
การตัดสินค้าจากคลังที่แก้ไขยกเลิกโปรแกรมแก้ไขด่วนนี้
ปัญหาที่ 1
Symptoms
สมมติว่า คุณเรียกวิธีApplication.DoEvents()จากตัวจัดการเหตุการณ์ValueChangedของตัวควบคุมNumericUpDown ตัวอย่างเช่น คุณสามารถใช้รหัสต่อไปนี้:private void numericUpDown1_ValueChanged(object sender, EventArgs e){ for (int i = 0; i < 10; i++) { Application.DoEvents(); Thread.Sleep(10); } } เมื่อตั้ง หรือปุ่มลูกศรค้างกดหลายวินาที ตัวจับเวลาการสร้างทีซ้ำหรือ decrements ที่สร้างตัวควบคุม Application.DoEventsขีดตัวจับเวลาถูกจัดการอีกครั้ง ซึ่งทำให้เกิดเหตุการณ์ValueChangedใหม่ แล้ว คุณสามารถป้อนตัวจัดการเหตุการณ์ขีดตัวจับเวลา เมื่อปล่อยปุ่มเมาส์ ตัวจับเวลาถูกทำลายในตัวจัดการที่ด้านล่างของกองซ้อน แต่แล้ว ถูกนำมาใช้ใหม่อีกครั้งเป็นกองซ้อนจะถูก unwound โดยที่ตัวจัดการอื่น ๆ ทำให้มีข้อยกเว้นของการอ้างอิงที่ว่างและความเสียหายวิธีแก้ปัญหา เมื่อต้องการหลีกเลี่ยงปัญหานี้ ใช้BeginInvokeเพื่อเรียกแบบอะซิงโครนัส() Application.DoEventsหลังจากที่มีการประมวลผลเหตุการณ์ถึงเวลา ตัวอย่างเช่น ใช้คลาสดังต่อไปนี้เพื่อแทนลักษณะการทำงานเริ่มต้น:public class MyNumericUpDown : System.Windows.Forms.NumericUpDown{ public NumericUpDown() : base() { } protected override void OnValueChanged(EventArgs e) { // run the handler as a separate event to prevent re-entrance to prevent a NullRef when hitting. if (IsHandleCreated) BeginInvoke(new Action(() => base.OnValueChanged(e))); else base.OnValueChanged(e); } } หมายเหตุ โดยทั่วไปแล้ว เราไม่แนะนำให้ คุณใส่วนข้อความ (Application.DoEvents) จากตัวจัดการข้อความที่ (ValueChangedยกกำลังจากตัวจัดการข้อความTimer.OnTick ), เนื่องจากนี้อาจทำให้ข้อมูลเกินสแตก ตัวอย่างเช่น ช่วงของตัวควบคุมNumericUpDownมีขนาดใหญ่ และผู้ใช้มีปุ่มลูกศรค้างเป็นเวลานาน ใช้BeginInvokeเพื่อหลีกเลี่ยงการข้อมูลเกินสแตก โปรแกรมแก้ไขด่วนนี้แก้ปัญหานี้
ปัญหาที่ 2
อาการ
ข้อความที่จัดรูปแบบคัดลอกจากเอกสาร XPS ยาวอาจใช้เวลาหลายนาที ขึ้นอยู่กับตำแหน่งของข้อความภายในเอกสาร และอาจทำให้แอพลิเคชันเมื่อต้องการตรึง
Cause ปัญหานี้เกิดขึ้นเนื่องจากการประกาศการจัดรูปแบบบางอย่างจำเป็นต้องมีการสแกนเอกสารตั้งแต่เริ่มต้นจนถึงการเลือกที่ต้องการ รายงานเหล่านี้จะไม่ค่อย (เหล่านั้นมาจากองค์ประกอบแบบกำหนดเองที่มีแอตทริบิวต์TextElementEditingBehaviorAttributeที่ถูกทำเครื่องหมายIsTypographicOnly) ตรรกะมีการเปลี่ยนแปลงในโปรแกรมแก้ไขด่วนนี้เพื่อหลีกเลี่ยงการสแกนมีราคาแพงเมื่อประกาศดังกล่าวปรากฏในส่วนที่เลือกที่ต้องการปัญหาที่ 3
อาการ
TextBlock Windows นำเสนอพื้นฐาน (WPF) อาจแสดงอย่าง น้อยหนึ่งอักขระที่ส่วนท้ายของข้อความ ปัญหานี้เกิดขึ้นเมื่อตรงตามเงื่อนไขต่อไปนี้:
-
TextWrapping หรือ TextTrimming จะเปิดใช้งาน
-
ช่องว่างภายในศูนย์ หรือ TextFormattingMode เป็น "แสดง"
-
ความกว้างไม่ได้ตั้งค่า หรือถูกตั้งค่าเป็น "อัตโนมัติ"
-
FontFamily ขนาดแบบอักษร และอักขระที่ระบุในข้อความทำให้มีความกว้าง unfavorable
Cause
ปัญหานี้เกิดขึ้นเนื่องจาก inaccuracies เป็นตัวเลข (ปัดเศษข้อผิดพลาด) ที่อาจเกิดขึ้นได้เมื่อคำนวณความกว้างของข้อความ การแปลงความกว้างระหว่างระบบพิกัดภายใน การลงบัญชีสำหรับช่องว่างภายใน และการจัดตำแหน่งข้อความกับขอบเขตของพิกเซลสำหรับโหมดการแสดงผล มีการเพิ่มการป้องกัน inaccuracies ต่าง ๆ เหล่านี้เพื่อประมวลผล เพื่อให้แน่ใจว่า จะมีแสดงอักขระที่ควรจะแสดงขึ้นปัญหาที่ 4
ตรึงวัตถุอาจทำให้เกิดการแยกหน่วยความจำมากเกินไปฮีป ก่อให้เกิดการลดลงของประสิทธิภาพ การแก้ไขนี้มีการนำประสิทธิภาพของหน่วยความจำบัฟเฟอร์ ซึ่งมีการกระจายตัวของหน่วยความจำฮีปย่อหน้า
ปัญหาที่ 5
บางครั้ง โปรแกรมประยุกต์สามารถพบข้อยกเว้นการละเมิดการเข้าถึงในระหว่าง AppDomain ปิดลงหลังจากดำเนินการรวบรวมขยะพื้นหลัง
ปัญหาที่ 6
เครื่องมือวินิจฉัยที่ทำ IL instrumentation โดยใช้ API การสร้างโพรไฟล์อาจทำให้เกิดข้อยกเว้นที่ไม่สามารถจัดการได้ดังต่อไปนี้เมื่อต้องการขึ้น โดยรันไทม์ภาษาทั่วไป (CLR):
0X80131401 " = SECURITY_E_INCOMPATIBLE_SHARE กำลังโหลดแอสเซมบลีนี้จะทำให้เกิดเงินช่วยเหลืออื่นตั้งจากอินสแตนซ์อื่น
นอกจากนี้ กระบวนการล้มเหลว ปัญหานี้เกิดขึ้นเฉพาะเมื่อคุณใช้เครื่องมือวินิจฉัย
ปัญหาที่ 7
เมื่อคุณใช้จุดเพิ่มความสามารถHttpMessageHandlerของ Windows สื่อสารพื้นฐาน (WCF) 4.5 (หรือที่เรียกอีกอย่างหนึ่งว่า WCF HTTP ไปป์ไลน์), หัวข้อการพิสูจน์ตัวจริงของเว็บไซต์ไม่สามารถตั้งค่าHttpRequestMessageหรือHttpResponseMessage เป็นเช่นนี้ เพราะจุดเพิ่มความสามารถของHttpMessageHandlerใหม่ใช้กลไกอื่นสำหรับการจัดการหัวข้อ
หลังจากที่คุณใช้โปรแกรมแก้ไขด่วนนี้ กลไกที่สองเมื่อต้องการเพิ่มส่วนหัวถูกนำไปพาริตี้ และหนึ่งควรจะสามารถเพิ่มส่วนหัวของการรับรองความถูกต้อง WWW อีกครั้งปัญหาที่ 8
มีข้อยกเว้นของNullReferenceExceptionถูกส่งออกจากวิธีการSqlInternalConnectionTds.BreakConnection โปรแกรมแก้ไขด่วนนี้ช่วยแก้ปัญหาเกี่ยวกับเวลาที่นำไปNullReferenceExceptionข้อยกเว้น
ปัญหาที่ 9
อาการ[MC-NBFX] หรือ สมมติว่า คุณมีโปรแกรมประยุกต์ WCF ที่ใช้วิธีการSystem.ServiceModel.Channels.Message.CreateBufferedCopy ข้อความถูกประมวลผลที่ประกอบด้วยอักขระในช่วง U + 10000 กับ U + 10FFFF (รวม) ซึ่งแสดงใน UTF-8 เป็นลำดับ 4 ไบต์ ในสถานการณ์นี้ อาจสูญเสียการเข้ารหัสข้อความไบนารี และคุณได้รับข้อความแสดงข้อผิดพลาดต่อไปนี้: System.ArgumentException: The output char buffer is too small to contain the decoded characters, encoding 'Unicode (UTF-8)' fallback 'System.Text.DecoderExceptionFallback'.Parameter name: chars at System.Text.Encoding.ThrowCharsOverflow() at System.Text.Encoding.ThrowCharsOverflow(DecoderNLS decoder, Boolean nothingDecoded) at System.Text.UTF8Encoding.GetChars(Byte* bytes, Int32 byteCount, Char* chars, Int32 charCount, DecoderNLS baseDecoder) at System.Text.DecoderNLS.GetChars(Byte* bytes, Int32 byteCount, Char* chars, Int32 charCount, Boolean flush) at System.Text.DecoderNLS.GetChars(Byte[] bytes, Int32 byteIndex, Int32 byteCount, Char[] chars, Int32 charIndex, Boolean flush) at System.Text.DecoderNLS.GetChars(Byte[] bytes, Int32 byteIndex, Int32 byteCount, Char[] chars, Int32 charIndex) at System.Xml.ValueHandle.TryReadChars(Char[] chars, Int32 offset, Int32 count, Int32& actual) at System.Xml.XmlBaseReader.ReadValueChunk(Char[] chars, Int32 offset, Int32 count) at System.Xml.XmlBinaryWriter.WriteTextNode(XmlDictionaryReader reader, Boolean attribute) at System.Xml.XmlDictionaryWriter.WriteNode(XmlDictionaryReader reader, Boolean defattr) at System.ServiceModel.Channels.ReceivedMessage.OnWriteBodyContents(XmlDictionaryWriter writer) at System.ServiceModel.Channels.Message.OnWriteMessage(XmlDictionaryWriter writer) at System.ServiceModel.Channels.Message.OnCreateBufferedCopy(Int32 maxBufferSize, XmlDictionaryReaderQuotas quotas) at System.ServiceModel.Channels.StreamedMessage.OnCreateBufferedCopy(Int32 maxBufferSize) at System.ServiceModel.Channels.Message.CreateBufferedCopy(Int32 maxBufferSize) at ConsoleApplication1.BufferRequestChannel.WrappingRequestContext.BufferMessage() เมื่อปัญหานี้เกิดขึ้น ไคลเอนต์หมดเวลา โดยไม่มีการตอบสนองถ้าโปรแกรมประยุกต์ WCF ที่โฮสต์ด้วยตนเอง ถ้าโปรแกรมประยุกต์ WCF ที่ โฮสต์เว็บ (ASP.NET), ไคลเอนต์จะได้รับข้อผิดพลาดเซิร์ฟเวอร์ 500
สมมติว่า คุณมีโปรแกรมประยุกต์ WCF ที่ใช้คลาสBinaryMessageEncoderและตัวเข้ารหัสใช้ระเบียน UTF-8 ยึดข้อต่อสาเหตุ
ปัญหานี้เกิดขึ้นเนื่องจากรายละเอียดการใช้งานภายในที่จัดสรรเนื้อที่ว่างไม่เพียงพอในบางครั้งเมื่อป้อนลำดับของอักขระ UTF-8 4 ไบต์จะถูกถอดรหัส
การแก้ปัญหา
เมื่อต้องการแก้ไขปัญหานี้ ใช้โปรแกรมแก้ไขด่วน หลังจากใช้โปรแกรมแก้ไขด่วน โปรแกรมประยุกต์ WCF จะรอต่อไป
อ่านวิธีการถอดรหัสอักขระถ้ามีเนื้อที่ว่างไม่เพียงพอในบัฟเฟอร์ขาออกเพื่อถอดรหัสอักขระ Unicode สัญลักษณ์