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