W usługach WCF hostowanych w usługach IIS w systemie Windows 7 lub Windows Server 2008 R2 może zostać wyświetlony komunikat o błędzie wyjątku po zainstalowaniu aktualizacji programu .NET Framework 3.5 z dodatkiem SP1 dla programu WCF

Dotyczy
Windows Communication Foundation

Objawy

Rozważmy następujący scenariusz:

  • Na komputerze działa system Windows 7 lub Windows Server 2008 R2.
  • Na komputerze jest uruchomiona usługa Windows Communication Foundation (WCF), która jest hostowana w internetowych usługach informacyjnych (IIS, Internet Information Services). Usługa używa protokołu HTTP lub HTTPS i korzysta z uwierzytelniania systemu Windows.
  • Zainstalowano niektóre aktualizacje programu Microsoft .NET Framework 3.0 z dodatkiem Service Pack 2 lub .NET Framework 3.5 z dodatkiem Service Pack 1 dla programu WCF. Na przykład instalujesz aktualizację zabezpieczeń 2756920.

W tym scenariuszu na żądanej stronie może zostać wyświetlony komunikat o błędzie wyjątku podobny do następującego:

Uwaga

Błąd serwera w aplikacji "/SecurtyTokenServiceApplication"
Nie znaleziono metody: 'System.String
System.ServiceModel.Ativation.iis7helper.extendedprotectiondotlessspnnenabledHelper(system.object)'

Ten komunikat o błędzie może zostać wyświetlony na przykład po przejściu do witryny sieci Web programu Microsoft SharePoint 2010. 

W przypadku wystąpienia tego problemu może zostać również wyświetlony następujący komunikat o błędzie w dzienniku zdarzeń na serwerze:

Uwaga

Host internetowy nie może przetworzyć żądania.
Informacje o nadawcy: System.ServiceModel.ServiceHostingEnvironment+HostingManager/17653682
Wyjątek: System.ServiceModel.ServiceActivationException: nie można aktywować usługi "/SecurityTokenServiceApplication/securitytoken.svc" z powodu wyjątku podczas kompilacji.
Komunikat o wyjątku to: Nie znaleziono metody: "System.String System.ServiceModel.Activation.Iis7Helper.ExtendedProtectionDotlessSpnNotEnabledThrowHelper(System.Object)". --->
System.MissingMethodException: Nie znaleziono metody: "System.String System.ServiceModel.Activation.Iis7Helper.ExtendedProtectionDotlessSpnEnabledThrowHelper(System.Object)".
   at System.ServiceModel.WasHosting.MetabaseSettingsIis7V2.WebConfigurationManagerWrapper.BuildExtendedProtectionPolicy(ExtendedProtectionTokenChecking tokenChecking, ExtendedProtectionFlags flags, List'1 spnList)
    at System.ServiceModel.WasHosting.MetabaseSettingsIis7V2.WebConfigurationManagerWrapper.GetExtendedProtectionPolicy(element ConfigurationElement)
   at System.ServiceModel.WasHosting.MetabaseSettingsIis7V2.ProcessWindowsAuthentication(String siteName, String virtualPath, HostedServiceTransportSettings& transportSettings)

Przyczyna

Ten problem występuje, ponieważ na komputerze mogą być zainstalowane poprawki zawierające tylko System.ServiceModel.dll, a nie System.ServiceModel.WasHosting.dll. Lista poprawek, o których wiadomo, że zawierają tylko te pliki, znajduje się w sekcji "Więcej informacji".

Z powodu tego problemu nowsza aktualizacja nie może zainstalować tej samej wersji obu plików. Ujawnia to zależność między tymi dwoma plikami. To z kolei powoduje wspomniany wcześniej wyjątek. Ten problem występuje z powodu błędu we wcześniej wydanych poprawkach i nie jest spowodowany konkretnie przez nową aktualizację. Nowa aktualizacja powoduje jedynie ujawnienie problemu.

Rozwiązanie

        
        
        
Aby obejść ten problem, upewnij się, że wersje System.ServiceModel.dll i System.ServiceModel.WasHosting.dll są zsynchronizowane.

Aby rozwiązać ten problem, należy zainstalować 2637518 aktualizacji lub dowolną poprawkę .NET Framework 3.0 z dodatkiem SP2 zawierającą oba zestawy.

Zalecamy zainstalowanie aktualizacji 2637518 , aby rozwiązać ten problem. Jednak ta poprawka ma na celu rozwiązanie tylko problemu opisanego w tym artykule. Tę poprawkę należy stosować tylko do systemów, w których występuje ten konkretny problem.

Aby pobrać tę poprawkę z Centrum pobierania Microsoft, przejdź na następującą stronę Centrum pobierania Microsoft w sieci Web:

http://go.microsoft.com/fwlink/?LinkID=242859 Uwaga: Jeśli ten problem już występuje, zainstaluj aktualizację 2637518. Nie trzeba ponownie instalować aktualizacji, która spowodowała wystąpienie tego problemu.

Wymóg ponownego uruchomienia

Po zastosowaniu tej aktualizacji może być konieczne ponowne uruchomienie komputera.

Stan

Firma Microsoft potwierdziła, że jest to problem dotyczący produktów firmy Microsoft wymienionych w sekcji „Dotyczy”.

Więcej informacji

Poniższe poprawki mogą powodować ten problem, jeśli zostały zainstalowane na komputerze z systemem Windows 7 lub Windows Server 2008 R2 RTM i jeśli nie są zainstalowane nowe aktualizacje programu .NET Framework 3.5 z dodatkiem SP1 dla programu WCF. Aby uzyskać więcej informacji, kliknij następujące numery artykułów w celu wyświetlenia tych artykułów z bazy wiedzy Baza wiedzy Microsoft Knowledge Base:

976462 Poprawka dla programu the.NET Framework 3.5 z dodatkiem Service Pack 1 jest dostępna dla systemów Windows 7 i Windows Server 2008 R2 jako wymaganie wstępne dla programu Microsoft Office SharePoint Server 2010

977420 Dostępny jest pakiet zbiorczy poprawek rozwiązujących problemy w programie Windows Communication Foundation w programie .NET Framework 3.5 z dodatkiem SP1 dla systemów Windows 7 i Windows Server 2008 R2

982867 Usługi WCF hostowane przez komputery wraz z funkcją równoważenia obciążenia sieciowego nie działają w .NET Framework 3.5 z dodatkiem SP1 lub w .NET Framework 4