WPROWADZENIE
Windows Communication Foundation (WCF) nie ma funkcji do Wysyłanie zabezpieczonej wiadomości, a następnie otrzymywać odpowiedzi na niezabezpieczoną, lub do wysyłania wiadomości niezabezpieczoną i otrzymywać odpowiedzi na zabezpieczonej. Poprawki, którą opisano w tym artykule dodaje nowy atrybut enableUnsecuredResponse . Wartość domyślna atrybutu enableUnsecuredResponse jest false. Jeśli wartość tego atrybutu jest ustawiony na wartość true, następujące nowe funkcje są włączone w WCF:
-
WCF klientów może zaakceptować niezabezpieczoną odpowiedzi, nawet, jeśli wiadomości wychodzące są zabezpieczone przy użyciu protokołu Secure Socket Layer (SSL) do podpisania treści wiadomości.
-
Usługi WCF można wysłać niezabezpieczoną odpowiedzi, które mają bez nagłówka zabezpieczeń w koperty protokołu SOAP, nawet jeśli wniosek jest zabezpieczona.
Uwaga Tylko atrybut enableUnsecuredResponse dotyczy tylko typu CustomBinding .
Rozwiązanie
Jeśli używasz.NET Framework 3.0, należy zainstalować poprawki, którą opisano w następującym artykule opartego na wiedzy firmy Microsoft:
NAPRAW 967105 : poprawka, która umożliwia WCF do zabezpieczonej wiadomości do wysyłania i odbierania odpowiedzi na nie zabezpieczoną, a do wysyłania wiadomości niezabezpieczone i otrzymywać odpowiedzi na zabezpieczonej, jest dostępna dla programu.NET Framework 3.0Jeśli używasz programu.NET Framework 3.5 z dodatkiem Service Pack 1 w systemie Windows 7 lub Windows Server 2008 R2, należy zainstalować poprawki, którą opisano w następującym artykule opartego na wiedzy firmy Microsoft:
977420 pakiet zbiorczy poprawek jest dostępny do rozwiązywania problemów w systemie Windows Communication Foundation w.NET Framework 3.5 z dodatkiem SP1 dla systemu Windows 7 i Windows Server 2008 R2
Jeśli używasz programu.NET Framework 3.5 z dodatkiem Service Pack 1 w innych systemach operacyjnych, należy zainstalować następującą poprawkę, aby rozwiązać ten problem.
Obsługiwana poprawka jest obecnie udostępniana przez firmę Microsoft. Jednak jest ona przeznaczona do usunięcia tylko problemu opisanego w tym artykule. Zastosuj ją tylko w systemach, w których występuje ten problem. Ta poprawka może być wciąż w fazie testowania. Jeśli dany system nie jest poważnie narażony na ten problem, firma Microsoft zaleca, aby poczekać na następny dodatek service Pack zawierający tę poprawkę.
Aby natychmiast rozwiązać ten problem, skontaktuj się z biurem obsługi klienta Microsoft w celu uzyskania poprawki. Aby uzyskać pełną listę numerów telefonów pomocy technicznej firmy Microsoft oraz informacje o pomocy technicznej odwiedź następującą witrynę firmy Microsoft w sieci Web:
http://support.microsoft.com/contactus/?ws=supportUwaga W wyjątkowych przypadkach opłaty za połączenie z pomocą techniczną mogą zostać anulowane, jeśli specjalista firmy Microsoft zdecyduje że określona aktualizacja, może rozwiązać Twój problem. Koszty obsługi zwykłych zastosuje się do dodatkowych pytań i problemów, których nie można rozwiązać przy użyciu określonej aktualizacji.
Wymagania wstępne
Aby zastosować tę poprawkę, musi mieć programu.NET Framework 3.5 z dodatkiem Service Pack 1.
Wymagania dotyczące ponownego uruchomienia
Nie trzeba ponownie uruchomić komputer po zastosowaniu tej poprawki, jeśli jest używane nie wystąpienie programu.NET Framework.
Informacje dotyczące zastępowania poprawek
Ta poprawka nie zastępuje żadnych innych poprawek.
Informacje o plikach
Wersja anglojęzyczna tej poprawki ma atrybuty plików (lub nowsze) wymienione w poniższej tabeli. Daty i godziny odpowiadające tym plikom zostały podane w formacie uniwersalnego czasu koordynowanego (UTC, Coordinated Universal Time). Po wyświetleniu informacji o pliku są konwertowane na czas lokalny. Aby zobaczyć różnicę między czasem UTC i czasem lokalnym, należy użyć z karty Strefa czasowa w aplecie Data i godzina w Panelu sterowania.
Informacje o plikach dla wszystkich x86 wersji systemu Windows Server 2003 i Windows XP
Nazwa pliku |
Wersja pliku |
Rozmiar pliku |
Data |
Godzina |
Platforma |
---|---|---|---|---|---|
Servicemonikersupport.dll |
3.0.4506.4119 |
17,240 |
01-cze-2009 |
22:56 |
x86 |
System.runtime.serialization.dll |
3.0.4506.4119 |
970,752 |
01-cze-2009 |
22:56 |
x86 |
System.servicemodel.dll |
3.0.4506.4119 |
5,931,008 |
01-cze-2009 |
22:56 |
x86 |
Informacje o plikach dla wszystkich x64-bitowych wersji systemu Windows Server 2003 i Windows XP
Nazwa pliku |
Wersja pliku |
Rozmiar pliku |
Data |
Godzina |
Platforma |
---|---|---|---|---|---|
Servicemonikersupport.dll |
3.0.4506.4119 |
19,304 |
01-cze-2009 |
22:28 |
x64 |
System.runtime.serialization.dll |
3.0.4506.4119 |
847,872 |
01-cze-2009 |
22:28 |
x64 |
System.servicemodel.dll |
3.0.4506.4119 |
5,267,456 |
01-cze-2009 |
22:28 |
x64 |
Informacje o plikach dla wszystkich x86 wersji dodatku SP2 dla systemu Windows Vista i Windows Server 2008 z dodatkiem SP2
Nazwa pliku |
Wersja pliku |
Rozmiar pliku |
Data |
Godzina |
---|---|---|---|---|
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 |
Informacje o plikach dla wszystkich x64-bitowych wersji systemu Windows Vista z dodatkiem SP2 i Windows Server 2008 z dodatkiem SP2
Nazwa pliku |
Wersja pliku |
Rozmiar pliku |
Data |
Godzina |
Platforma |
---|---|---|---|---|---|
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 |
Informacje o plikach dla wszystkich wersji z procesorem Itanium systemu Windows Server 2008 z dodatkiem SP2
Nazwa pliku |
Wersja pliku |
Rozmiar pliku |
Data |
Godzina |
Platforma |
---|---|---|---|---|---|
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 |
Stan
Firma Microsoft potwierdziła, że jest to problem występujący w produktach firmy Microsoft wymienionych w sekcji „Dotyczy”.
Więcej informacji
Poniższy przykład kodu umożliwia testowanie atrybut enableUnsecuredResponse :
Usługi
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();
Klient
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();
}