บทนำ
Windows สื่อสารพื้นฐาน (WCF) ไม่มีฟังก์ชันการทำงาน เพื่อส่งข้อความที่ถูกทำให้ปลอดภัย และจากนั้น ได้รับการตอบสนองที่ไม่ปลอดภัย หรือเพื่อส่งข้อความที่ไม่ปลอดภัย และได้รับการตอบรับที่ปลอดภัย โปรแกรมแก้ไขด่วนที่อธิบายไว้ในบทความนี้เพิ่มแอตทริบิวต์enableUnsecuredResponseใหม่ ค่าเริ่มต้นของแอตทริบิวต์enableUnsecuredResponseเป็นเท็จ ถ้าคุณตั้งค่าของแอตทริบิวต์นี้เป็นtrueคุณลักษณะใหม่ต่อไปนี้จะเปิดใช้งานใน WCF:
-
ไคลเอนต์ WCF สามารถยอมรับการตอบสนองที่ไม่ปลอดภัยแม้ว่าข้อความส่งออกจะมีความปลอดภัย โดยใช้โพรโทคอล Secure Socket Layer (SSL) เพื่อเซ็นชื่อข้อความ
-
บริการ WCF ที่สามารถส่งการตอบสนองที่ไม่ปลอดภัยที่มีส่วนหัวไม่มีความปลอดภัยในซองจดหมาย SOAP แม้ว่าคำขอได้รับการป้องกัน
หมายเหตุ แอตทริบิวต์enableUnsecuredResponseใช้เฉพาะกับชนิดCustomBindingเท่านั้น
การแก้ปัญหา
ถ้าคุณกำลังใช้.NET Framework 3.0 ติดตั้งโปรแกรมแก้ไขด่วนที่อธิบายไว้ในบทความต่อไปนี้ตามความรู้ของ Microsoft:
967105แก้ไข: โปรแกรมแก้ไขด่วนที่ช่วยให้ WCF เพื่อส่งข้อความที่ถูกทำให้ปลอดภัย และได้รับการตอบสนองที่เครือ และการส่งข้อความที่ไม่ปลอดภัย และได้รับการตอบรับที่ปลอดภัย พร้อมใช้งานสำหรับ.NET Framework 3.0ถ้าคุณกำลังใช้ 1 .NET Framework 3.5 Service Pack ใน Windows 7 หรือ Windows Server 2008 R2 ติดตั้งโปรแกรมแก้ไขด่วนที่อธิบายไว้ในบทความต่อไปนี้ตามความรู้ของ Microsoft:
977420การสะสมของโปรแกรมแก้ไขด่วนพร้อมใช้งานเมื่อต้องการแก้ไขปัญหาใน Windows สื่อสารพื้นฐาน ในการ.NET Framework 3.5 SP1 สำหรับ Windows 7 และ สำหรับ Windows Server 2008 R2
ถ้าคุณกำลังใช้ 1 .NET Framework 3.5 Service Pack บนระบบปฏิบัติการอื่น ๆ ติดตั้งโปรแกรมแก้ไขด่วนเพื่อแก้ไขปัญหาต่อไปนี้
โปรแกรมแก้ไขด่วนจะพร้อมใช้งานได้ในขณะนี้จาก Microsoft อย่างไรก็ตาม มุ่งหวังเพื่อแก้ไขปัญหาที่อธิบายไว้ในบทความนี้เท่านั้น นำวิธีนี้ไปใช้กับระบบที่ประสบกับปัญหาที่เฉพาะเจาะจงเท่านั้น โปรแกรมแก้ไขด่วนนี้อาจได้รับการทดสอบเพิ่มเติม ดังนั้น ถ้าคุณจะไม่รุนแรงได้รับผลกระทบจากปัญหานี้ เราขอแนะนำให้ คุณรอ service pack ถัดไปที่ประกอบด้วยโปรแกรมแก้ไขด่วนนี้
เมื่อต้องการแก้ไขปัญหานี้ทันที ติดต่อฝ่ายบริการสนับสนุนลูกค้าของ Microsoft เพื่อขอรับโปรแกรมแก้ไขด่วน สำหรับรายการทั้งหมดของหมายเลขโทรศัพท์บริการการสนับสนุนลูกค้าของ Microsoft และข้อมูลเกี่ยวกับค่าใช้จ่ายในการสนับสนุน โปรดเยี่ยมชมเว็บไซต์ต่อไปนี้ของ Microsoft:
http://support.microsoft.com/contactus/?ws=supportหมายเหตุ ในกรณีพิเศษ ค่าบริการที่เรียกเก็บตามปกติเมื่อโทรติดต่อฝ่ายสนับสนุนอาจจะยกเลิกได้หาก Microsoft Support Professional ตัดสินว่าโปรแกรมปรับปรุงที่เฉพาะเจาะจงจะแก้ไขปัญหาของคุณได้ ค่าใช้จ่ายในการสนับสนุนตามปกติจะใช้กับคำถามและปัญหาในการสนับสนุนเพิ่มเติมซึ่งไม่สอดคล้องตามเกณฑ์สำหรับโปรแกรมปรับปรุงเฉพาะที่เกี่ยวข้อง
ข้อกำหนดเบื้องต้น
เมื่อต้องการใช้ hotfix นี้ คุณต้องมี 1 .NET Framework 3.5 Service Pack
ข้อกำหนดการรีสตาร์ท
คุณไม่ต้องรีสตาร์ทคอมพิวเตอร์หลังจากใช้โปรแกรมแก้ไขด่วนนี้ถ้าไม่มีอินสแตนซ์ของ.NET Framework กำลังถูกใช้งาน
ข้อมูลการแทนที่โปรแกรมแก้ไขด่วน
โปรแกรมแก้ไขด่วนนี้ไม่ได้แทนโปรแกรมแก้ไขด่วนอื่น ๆ
ข้อมูลแฟ้ม
เวอร์ชันภาษาอังกฤษของโปรแกรมแก้ไขด่วนนี้มีแอตทริบิวต์ของแฟ้ม (หรือแอตทริบิวต์ของแฟ้มที่ใหม่กว่านี้) ซึ่งแสดงรายการไว้ในตารางต่อไปนี้ วันที่และเวลาสำหรับแฟ้มเหล่านี้จะแสดงรายการไว้ในรูปแบบเวลามาตรฐานสากล (UTC) เมื่อคุณดูข้อมูลแฟ้ม ระบบจะแปลงข้อมูลนี้เป็นเวลาท้องถิ่น เมื่อต้องการค้นหาความแตกต่างระหว่างเวลา UTC กับเวลาท้องถิ่น ใช้แท็บ โซนเวลา ในรายการ วันที่และเวลา ในแผงควบคุม
แฟ้มข้อมูลสำหรับรุ่นที่ใช้ x86 ทั้งหมด ของ Windows Server 2003 และ Windows XP
ชื่อแฟ้ม |
รุ่นของแฟ้ม |
ขนาดของแฟ้ม |
วันที่ |
เวลา |
แพลตฟอร์ม |
---|---|---|---|---|---|
Servicemonikersupport.dll |
3.0.4506.4119 |
17,240 |
01-มิย.-2009 |
22:56 |
x86 |
System.runtime.serialization.dll |
3.0.4506.4119 |
970,752 |
01-มิย.-2009 |
22:56 |
x86 |
System.servicemodel.dll |
3.0.4506.4119 |
5,931,008 |
01-มิย.-2009 |
22:56 |
x86 |
แฟ้มข้อมูลสำหรับรุ่นที่ใช้ x64 ทั้งหมด ของ Windows Server 2003 และ Windows XP
ชื่อแฟ้ม |
รุ่นของแฟ้ม |
ขนาดของแฟ้ม |
วันที่ |
เวลา |
แพลตฟอร์ม |
---|---|---|---|---|---|
Servicemonikersupport.dll |
3.0.4506.4119 |
19,304 |
01-มิย.-2009 |
22:28 |
x64 |
System.runtime.serialization.dll |
3.0.4506.4119 |
847,872 |
01-มิย.-2009 |
22:28 |
x64 |
System.servicemodel.dll |
3.0.4506.4119 |
5,267,456 |
01-มิย.-2009 |
22:28 |
x64 |
แฟ้มข้อมูลสำหรับรุ่นที่ใช้ x86 ทั้งหมด ของ Windows Vista SP2 และ Windows Server 2008 SP2
ชื่อแฟ้ม |
รุ่นของแฟ้ม |
ขนาดของแฟ้ม |
วันที่ |
เวลา |
---|---|---|---|---|
Servicemonikersupport.dll |
3.0.4506.4120 |
17,240 |
10-Jun-2009 |
06:55 |
System.runtime.serialization.dll |
3.0.4506.4120 |
970,752 |
10-Jun-2009 |
06:55 |
System.servicemodel.dll |
3.0.4506.4120 |
5,935,104 |
10-Jun-2009 |
06:55 |
แฟ้มข้อมูลสำหรับรุ่นที่ใช้ x64 ทั้งหมด ของ Windows Vista SP2 และ Windows Server 2008 SP2
ชื่อแฟ้ม |
รุ่นของแฟ้ม |
ขนาดของแฟ้ม |
วันที่ |
เวลา |
แพลตฟอร์ม |
---|---|---|---|---|---|
Servicemonikersupport.dll |
3.0.4506.4120 |
19,288 |
10-Jun-2009 |
06:56 |
x64 |
System.runtime.serialization.dll |
3.0.4506.4120 |
847,872 |
10-Jun-2009 |
06:56 |
x64 |
System.servicemodel.dll |
3.0.4506.4120 |
5,271,552 |
10-Jun-2009 |
06:56 |
x64 |
แฟ้มข้อมูลทั้งหมดใช้ Itanium รุ่น Windows Server 2008 SP2
ชื่อแฟ้ม |
รุ่นของแฟ้ม |
ขนาดของแฟ้ม |
วันที่ |
เวลา |
แพลตฟอร์ม |
---|---|---|---|---|---|
Servicemonikersupport.dll |
3.0.4506.4120 |
33,640 |
10-Jun-2009 |
06:56 |
IA-64 |
System.runtime.serialization.dll |
3.0.4506.4120 |
847,872 |
10-Jun-2009 |
06:56 |
IA-64 |
System.servicemodel.dll |
3.0.4506.4120 |
5,271,552 |
10-Jun-2009 |
06:56 |
IA-64 |
สถานะ
Microsoft ยืนยันว่านี่เป็นปัญหาในผลิตภัณฑ์ของ Microsoft ซึ่งแสดงไว้ในส่วน "นำไปใช้กับ"
ข้อมูลเพิ่มเติม
ใช้ตัวอย่างรหัสต่อไปนี้เพื่อทดสอบแอตทริบิวต์enableUnsecuredResponse :
การบริการ
BindingElementCollection serviceBec = new BindingElementCollection();
SecurityBindingElement serviceSbe = SecurityBindingElement.CreateUserNameForCertificateBindingElement();
serviceSbe.EnableUnsecuredResponse = true;
serviceBec.Add(serviceSbe);
serviceBec.Add(new TextMessageEncodingBindingElement());
serviceBec.Add(new HttpTransportBindingElement());
Binding serviceBinding = new CustomBinding(serviceBec);
ServiceHost serviceHost = new ServiceHost(typeof(RequestReply));
…
serviceHost.Open();
ไคลเอ็นต์
BindingElementCollection clientBec = new BindingElementCollection();
SecurityBindingElement clientSbe = SecurityBindingElement.CreateUserNameForCertificateBindingElement();
clientSbe.EnableUnsecuredResponse = true;
clientBec.Add(clientSbe);
clientBec.Add(new TextMessageEncodingBindingElement());
clientBec.Add(new HttpTransportBindingElement());
Binding clientBinding = new CustomBinding(clientBec);
IRequestReply channel = cf.CreateChannel();
try
{
channel.SendString("Hello");
cf.Close();
}