GIỚI THIỆU
Windows Communication Foundation (WCF) không có chức năng gửi thông báo bảo mật và sau đó nhận được phản hồi không an toàn, hoặc để gửi thư không an toàn và nhận được câu trả lời bảo mật. Hotfix được mô tả trong bài viết này thêm một thuộc tính enableUnsecuredResponse mới. Giá trị mặc định của thuộc tính enableUnsecuredResponse là sai. Nếu bạn đặt giá trị của thuộc tính này đúng, các tính năng mới được kích hoạt trong WCF:
-
WCF khách hàng có thể chấp nhận câu trả lời không an toàn ngay cả khi các thư được bảo vệ bằng cách sử dụng giao thức Secure Socket Layer (SSL) để đăng nhập thư.
-
Dịch vụ WCF có thể gửi phản hồi không an toàn có tiêu đề bảo mật có trong phong bì SOAP ngay cả khi yêu cầu được bảo vệ.
Lưu ý Thuộc tính enableUnsecuredResponse chỉ chỉ áp dụng cho các loại CustomBinding .
Giải pháp
Nếu bạn đang sử dụng .NET Framework 3.0, cài đặt hotfix được mô tả trong bài viết dựa trên kiến thức Microsoft sau:
Khắc phục sự cố 967105 : không có bảo đảm một hotfix cho phép WCF gửi thông báo bảo mật và nhận câu trả lời và gửi thư không an toàn và nhận được phản ứng bảo mật, có .NET Framework 3.0Nếu bạn đang sử dụng các .NET Framework 3.5 gói dịch vụ 1 trên Windows 7 hoặc Windows Server 2008 R2, cài đặt hotfix được mô tả trong bài viết dựa trên kiến thức Microsoft sau:
977420 tập hợp các hotfix có sẵn để khắc phục sự cố trong Windows Communication Foundation trong .NET Framework 3.5 SP1 cho Windows 7 và Windows Server 2008 R2 Nếu bạn đang sử dụng .NET Framework 3.5 Service Pack 1 trên hệ điều hành khác, cài đặt hotfix sau để khắc phục sự cố. Microsoft hiện đã cung cấp bản cập nhật nóng được hỗ trợ. Tuy nhiên, nó là nhằm khắc phục chỉ sự cố được mô tả trong bài viết này. Áp dụng cho các hệ thống đang gặp sự cố cụ thể này. Hotfix này có thể được kiểm tra thêm. Vì vậy, nếu bạn không bị ảnh hưởng bởi sự cố này, chúng tôi khuyến nghị bạn đợi gói dịch vụ tiếp theo có chứa hotfix này. Để giải quyết vấn đề này ngay lập tức, hãy liên hệ với dịch vụ hỗ trợ khách hàng Microsoft để lấy hotfix. Để biết danh sách đầy đủ số điện thoại Dịch vụ hỗ trợ khách hàng của Microsoft và thông tin về chi phí hỗ trợ, ghé thăm Web site sau của Microsoft:
http://support.microsoft.com/contactus/?ws=supportLưu ý Trong trường hợp đặc biệt, chi phí thường phát sinh cho cuộc gọi hỗ trợ có thể bị hủy bỏ nếu chuyên viên hỗ trợ Microsoft xác định rằng một Cập Nhật cụ thể sẽ giải quyết vấn đề của bạn. Chi phí hỗ trợ thông thường sẽ áp dụng cho các vấn đề không phù hợp với bản Cập Nhật cụ thể trong câu hỏi và câu hỏi hỗ trợ bổ sung.
Điều kiện tiên quyết
Để áp dụng hotfix này, bạn phải vào .NET Framework 3.5 gói dịch vụ 1.
Yêu cầu khởi động lại
Bạn không phải khởi động lại máy tính sau khi bạn áp dụng hotfix này nếu không có phiên bản .NET Framework được sử dụng.
Thông tin thay thế cập nhật nóng
Hotfix này không thay thế bất kỳ hotfix nào khác.
Thông tin về tệp
Phiên bản tiếng Anh của cập nhật nóng này có các thuộc tính tệp (hoặc thuộc tính tệp mới hơn) được liệt kê trong bảng sau. Ngày và giờ của các tệp này được liệt kê theo Giờ Quốc tế Phối hợp (UTC). Khi bạn xem thông tin về tệp, ngày và giờ được chuyển đổi thành giờ địa phương. Để tìm sự khác nhau giữa UTC và giờ địa phương, sử dụng tab Múi Giờ trong mục Ngày và Giờ trong Pa-nen điều khiển.
Thông tin tệp cho tất cả các phiên bản dựa trên x86 của Windows Server 2003 và Windows XP
Tên tệp |
Phiên bản tệp |
Kích thước tệp |
Ngày |
Giờ |
Nền tảng |
---|---|---|---|---|---|
Servicemonikersupport.dll |
3.0.4506.4119 |
17.240 người |
01 tháng 6 năm 2009 |
22:56 |
x86 |
System.runtime.serialization.dll |
3.0.4506.4119 |
970,752 |
01 tháng 6 năm 2009 |
22:56 |
x86 |
System.servicemodel.dll |
3.0.4506.4119 |
5,931,008 |
01 tháng 6 năm 2009 |
22:56 |
x86 |
Thông tin tệp cho tất cả các phiên bản dựa trên x64 của Windows Server 2003 và Windows XP
Tên tệp |
Phiên bản tệp |
Kích thước tệp |
Ngày |
Giờ |
Nền tảng |
---|---|---|---|---|---|
Servicemonikersupport.dll |
3.0.4506.4119 |
19,304 |
01 tháng 6 năm 2009 |
22:28 |
x64 |
System.runtime.serialization.dll |
3.0.4506.4119 |
847,872 |
01 tháng 6 năm 2009 |
22:28 |
x64 |
System.servicemodel.dll |
3.0.4506.4119 |
5,267,456 |
01 tháng 6 năm 2009 |
22:28 |
x64 |
Thông tin tệp cho tất cả các phiên bản dựa trên x86 Windows Vista SP2 và Windows Server 2008 SP2
Tên tệp |
Phiên bản tệp |
Kích thước tệp |
Ngày |
Giờ |
---|---|---|---|---|
Servicemonikersupport.dll |
3.0.4506.4120 |
17.240 người |
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 |
Thông tin tệp cho tất cả các phiên bản dựa trên x64 Windows Vista SP2 và Windows Server 2008 SP2
Tên tệp |
Phiên bản tệp |
Kích thước tệp |
Ngày |
Giờ |
Nền tảng |
---|---|---|---|---|---|
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 |
Thông tin tệp cho tất cả phiên bản dựa vào Itanium của Windows Server 2008 SP2
Tên tệp |
Phiên bản tệp |
Kích thước tệp |
Ngày |
Giờ |
Nền tảng |
---|---|---|---|---|---|
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 |
Trạng thái
Microsoft đã xác nhận rằng đây là sự cố trong sản phẩm của Microsoft được liệt kê trong phần "Áp dụng cho".
Thông tin
Sử dụng mẫu mã sau đây để kiểm tra tính enableUnsecuredResponse :
Dịch vụ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();
Khách hàng
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(); }