Nie można obsługiwać usług WCF w usługach IIS w systemie Windows 8

199

Gdy próbuję obsługiwać usługę WCF na IIS na komputerze z systemem Windows 8, pojawia się dobrze znany błąd

Żądana strona nie może zostać wyświetlona z powodu konfiguracji rozszerzenia. Jeśli strona jest skryptem, dodaj moduł obsługi. Jeśli plik powinien zostać pobrany, dodaj mapę MIME.

Stare obejście miało zostać uruchomione, aspnet_regiis -iale wydaje się, że to polecenie było przestarzałe w systemie Windows 8, dając odpowiedź This option is not supported on this version of the operating system. (...).

Jaka będzie praca?

(Udało mi się już włączyć zwykłe aspxstrony, więc większość konfiguracji IIS wydaje się zdrowa).

faester
źródło
Aby uzyskać więcej informacji na temat aspnet_regiis -ipolecenia dla użytkowników wcześniejszych niż Windows 8, zobacz ten link: aspsnippets.com/Articles/…
David,

Odpowiedzi:

405

Wydawało się, że nie ma problemu; usługę WCF należy włączyć za pomocą Programs and Features -> Turn Windows features on or offPanelu sterowania. Przejdź .NET Framework Advanced Services -> WCF Servicesi włącz HTTP Activationzgodnie z opisem w tym poście na mdsn .

W wierszu polecenia (jako administrator) możesz uruchomić:

C:\> DISM /Online /Enable-Feature /FeatureName:WCF-HTTP-Activation
C:\> DISM /Online /Enable-Feature /FeatureName:WCF-HTTP-Activation45

Jeśli pojawi się błąd, skorzystaj z poniższego

C:\> DISM /Online /Enable-Feature /all /FeatureName:WCF-HTTP-Activation
C:\> DISM /Online /Enable-Feature /all /FeatureName:WCF-HTTP-Activation45
faester
źródło
6
Spędziłem czas szukając w IIS Manager. Myślę, że IIS Manager powinien mieć ikonę kierującą lub informującą użytkownika o .NET Framework Advnaced Services.
Tony_Henrich
Za pomocą wiersza polecenia pojawia się błąd „Operacja jest zakończona, ale funkcja aktywacji WCF-HTTP nie została włączona. Wymagana funkcja nadrzędna może nie być włączona. Możesz użyć opcji / enable-feature / all, aby automatycznie włączyć każdą funkcję nadrzędną z poniższej listy. Jeśli funkcje nadrzędne są już włączone, przejdź do pliku dziennika, aby uzyskać dalszą diagnostykę. ". Zamiast tego użyłem metody GUI, aby wiedzieć, co włączam i zadziałało.
Ben Adams,
5
Mam takie same „Wymagane cecha dominująca nie może być włączony” błąd jak Ben Anderson, i starał się sugestia w komunikacie o błędzie (dodając /allargument), który następnie pracował w porządku: DISM /Online /Enable-Feature /all /FeatureName:WCF-HTTP-Activation45.
Troy Gizzi
1
Pan jest niesamowity. Możesz także dodać (to drobny szczegół), że można to zrobić w zależności od wersji .Net Framework. Jak w.NET 3.5 Framework Advanced Services -> Windows Communication Foundation HTTP Activation
rion18
To jest ratowanie życia. Większość internetowych rozwiązań tego problemu umożliwia włączenie .NET 3.5 Framework w ramach funkcji sieciowych. TO NIE wystarcza. Musisz także wykonać wspomniany tutaj krok.
markaaronky
95

W przypadku systemu Windows Server 2012 rozwiązanie jest bardzo podobne do faester (patrz wyżej). W Menedżerze serwera kliknij Add roles and features, wybierz odpowiedni serwer, a następnie wybierz Features. Poniżej .NET Framework 4.5 Featureszobaczysz WCF Services, a poniżej znajdziesz HTTP Activation.

Bill Moon
źródło
Dziękuję Ci za to ! ale co powiesz na .Net 4? myślisz, że włączenie tej funkcji zrobi to samo dla .Net v4.0?
Aladdin Gallas
2
W dowolnej istniejącej aplikacji internetowej po dodaniu funkcji systemu Windows należy również wykonać następujące czynności: - Uruchom inetmgr - Otwórz „Mapowania modułu obsługi” - Sprawdź, czy mapowania svc-ISAPI dla rozszerzenia * .svc są obecne. Jeśli nie, użyj akcji „Przywróć do rodzica”, aby skopiować je z witryny nadrzędnej. Zauważ, że zakłada to, że niestandardowe mapowania modułu obsługi są konfigurowane w aplikacji web.config, jak to zwykle ma miejsce w IIS7 +. Jeśli nie, stracisz je podczas wykonywania „Przywróć do rodzica”.
Berend Engelbrecht
13

Wykonaj następujące dwa kroki w IIS 8.0

Dodaj nowy typ MIME i HttpHandler

  1. Rozszerzenie: .svc, typ MIME: application / octet-stream

  2. Ścieżka żądania: * .svc, Typ: System.ServiceModel.Activation.HttpHandler, Nazwa: svc-Integrated

Jeneesh Velayudhan
źródło
Najlepsze rozwiązanie dla mojej bardzo starej instalacji Windows 7, która nie włącza się - .Net 3.5 (Aktywacja HTTP i Non-HTTP) i WAS. Zbyt delikatne, aby ponownie zainstalować system operacyjny
użytkownik919426
Warto wiedzieć o tej metodzie, zwłaszcza podczas tworzenia i dodawania własnych programów obsługi. Jeśli jednak użyjesz „włączania i wyłączania funkcji systemu Windows”, uzyskasz większość znanych rozszerzeń plików, co pozwoli ci zaoszczędzić czas na dodawanie każdego z nich osobno (i znalezienie wszystkich poprawnych szczegółów)
Daniel Hollinrake,
11

Możesz to również osiągnąć poprzez WŁĄCZENIE funkcji systemu Windows. wprowadź opis zdjęcia tutaj wprowadź opis zdjęcia tutaj

Mohit Dharmadhikari
źródło
3

To jest naprawdę to samo rozwiązanie, co rozwiązanie Faestera i Billa Moona, ale oto jak to zrobić za pomocą PowerShell:

Import-Module Servermanager
Add-WindowsFeature AS-HTTP-Activation

Oczywiście nic też nie powstrzymuje Cię przed dzwonieniem DISMz PowerShell.

JamesQMurphy
źródło
Bardzo dobrze. Dziękuję za informację.
Rod Hartzell
-1

możesz dodać ten kod do web.config w asp mvc

   <system.webServer>
    <staticContent>
      <remove fileExtension=".srt" />
      <mimeMap fileExtension=".srt" mimeType="text/srt" />
      <remove fileExtension=".vtt" />
      <mimeMap fileExtension=".vtt" mimeType="text/vtt" />
    </staticContent>
  </system.webServer>

możesz zmienić rozszerzenie pliku za pomocą rozszerzenia

malik masis
źródło
Cześć @malik - Czy możesz wyjaśnić, w jaki sposób rozszerzenia plików mapowania mogą powodować działanie punktów końcowych svc?
faester
jeśli dobrze rozumiem, możesz zmienić rozszerzenie według swojego uznania. Możesz zajrzeć na feedforall.com/mime-types.htm, ale powiedziałbyś coś innego, przepraszam, nie rozumiem.
malik masis