ВСТУП
Windows Communication Foundation (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Якщо ви використовуєте .NET Framework 3.5 із пакетом оновлень 1 для Windows 7 або Windows Server 2008 R2, інсталюйте виправлення, яке описано у статті бази знань для Microsoft на основі:
977420 зведення виправлень доступне виправлення неполадок у Windows Communication Foundation в .NET Framework 3.5 SP1 для ОС Windows 7 і Windows Server 2008 R2
Якщо ви використовуєте .NET Framework 3.5 із пакетом оновлень 1 в інших операційних системах, інсталюйте таке виправлення для вирішення проблеми.
Корпорація Майкрософт випустила підтримуване виправлення доступна. Проте призначена для вирішення проблеми, описаної в цій статті. Він придатний лише для систем, які зазнають цієї конкретної проблеми. Те, що це виправлення може потребувати додаткового тестування. Таким чином, якщо ви не завдає значної, ми рекомендуємо почекати до виходу чергового пакета оновлень, що містить це виправлення.
Щоб негайно вирішити цю проблему, зверніться до служби підтримки Microsoft, щоб отримати виправлення. Повний перелік телефонів служби підтримки користувачів корпорації Майкрософт а також відомості про вартість обслуговування відвідайте веб-сайт корпорації Майкрософт:
http://support.microsoft.com/contactus/?ws=supportПримітка. В окремих випадках оплату звернення до служби підтримки може бути скасовано якщо технічної підтримки Майкрософт визначить, що телефонів служби. Плата стягується на додаткові питання і проблеми, які не пов'язані з оновленням.
Попередні вимоги
Щоб застосувати це виправлення, потрібно мати .NET Framework 3.5 із пакетом оновлень 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 |
Стан
Корпорація Майкрософт підтвердила існування цієї неполадки у продуктах Майкрософт, перелічених у розділі "Застосовується до".
Додаткові відомості
Використовувати такий приклад коду для перевірки 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();
}