Въведение
Windows комуникация фондация (WCF) няма опция да изпращате защитени съобщения и след това получавате незащитена отговор, или незащитена съобщения за изпращане и получаване на защитен отговор. Актуалната корекция, описана в тази статия добавя нов enableUnsecuredResponse атрибут. По подразбиране стойността на атрибута enableUnsecuredResponse е грешен. Ако зададете стойността на този атрибут вярно, следните нови функции са активирани в WCF:
-
WCF клиенти да приемете незащитена отговор, дори ако изходящи съобщения са защитени чрез протокола Secure Socket Layer (SSL) за влизане на съобщението.
-
WCF услуги могат да изпращат незащитена отговори, които нямат защита заглавна SOAP пакети, дори ако искането е защитена.
Забележка: Атрибутът enableUnsecuredResponse само се отнася само за CustomBinding тип.
Решение
Ако използвате .NET Framework 3.0, инсталирайте актуалната корекция, описана в следната статия от базата на знания на Microsoft:
967105 решение: актуална корекция, която позволява на WCF да изпращате защитени съобщения и получавате незащитени отговори и незащитена съобщения за изпращане и получаване на защитени отговор, е за .NET Framework 3.0Ако използвате .NET Framework 3.5 Service Pack 1 на Windows 7 или Windows Server 2008 R2, инсталирайте актуалната корекция, описана в следната статия от базата на знания на Microsoft:
977420 кумулативен спешна корекция е налична за отстраняване на проблеми в Windows комуникация фондация в .NET Framework 3.5 SP1 за Windows 7 и Windows Server 2008 R2 Ако използвате .NET Framework 3.5 Service Pack 1 за други операционни системи, инсталирайте следната спешна корекция за решение на проблема. Вече се предлага от Microsoft предоставя поддържана актуална корекция. Но тя е предназначена да коригира само проблема, описан в тази статия. Прилагайте корекцията само към системи, изпитващи този конкретен проблем. Възможно е провеждането на допълнителни тестове на тази актуална корекция. Следователно ако не сте силно засегнати от този проблем, препоръчваме да изчакате следващия сервизен пакет, който ще съдържа тази корекция. За незабавно решаване на проблема, се обърнете към услугите за поддръжка на клиенти на Microsoft да получите актуалната корекция. За пълен списък на телефонните номера на отдела за поддръжка на Microsoft и информация за цените на поддръжката посетете следния уеб сайт на Microsoft:
http://support.microsoft.com/contactus/?ws=supportЗабележка: При специални случаи таксите, които са за свързани с поддръжката обаждания могат да бъдат отменени, ако специалист по поддръжката на Microsoft прецени, че конкретна актуализация може да разреши проблема. Обичайните такси за поддръжката ще важат за допълнителни въпроси и проблеми, които не спадат към съответната актуализация.
Необходими условия:
За да приложите тази актуална корекция, трябва да имате .NET Framework 3.5 Service Pack 1.
Изискване за рестартиране
Не трябва да рестартирате компютъра, след като приложите тази актуална корекция ако няма екземпляр на .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(); }