WCF na IIS8; * Mapowanie obsługi .svc nie działa


272

Usiłuję uruchomić usługę wcf działającą w IIS8 na kompilacji 8400 z 2012 roku.

Podczas instalowania roli internetowej nie znaleziono rzeczy wcf (poniżej 3.51) jak w 2008 roku.

Po zainstalowaniu brakowało mapowania programu obsługi svc, więc zrobiłem:

%windir%\Microsoft.NET\Framework\v3.0\WindowsCommunication Foundation\ServiceModelReg.exe i

Teraz mapowanie modułu obsługi jest dostępne, ale nadal otrzymuję:

The resource you are looking for does not have a handler associated with it.

(Usunąłem program do obsługi plików statycznych).

Witryna korzysta z klasycznego potoku w celu podszywania się pod inne osoby.

Odpowiedzi:


553

Dokładniej:

  1. Uruchom Server Manager(na pasku zadań i menu Start)
  2. Wybierz serwer do administrowania (prawdopodobnie serwer lokalny)
  3. Przewiń w dół do Roles and Featuressekcji „ ”.
  4. Wybierz „ Add Role or Feature” z listy rozwijanej Zadania
  5. W Add Role or Feature Wizardoknie dialogowym „ ” kliknij „ Features” na liście stron po lewej stronie.
  6. Rozwiń ".Net 3.5"lub ".Net 4.5", w zależności od tego, co zainstalowałeś. (możesz wrócić do rolesekranu „ ”, aby dodać, jeśli nie masz.
  7. W WCF Servicessekcji „ ” zaznacz pole „ HTTP-Activation”. Możesz również dodać typy inne niż http, jeśli wiesz, że ich potrzebujesz (tcp, nazwane potoki itp.).
  8. Kliknij "Install"przycisk.

6
Ten nie działał w moim przypadku, ponieważ korzystam z systemu Windows 8 (z IIS 8).
Josh Mouch,

9
Jeśli najpierw uruchomiłeś ServiceModelReg.exe –i z katalogu v3.0, musisz również uruchomić ServiceModelReg.exe –ua, aby cofnąć go, zanim to zadziała.
Scott Anderson

14
Z wiersza polecenia: dism / Online / Enable-Feature / FeatureName: WCF-HTTP-Activation / All
Richard

4
Co jest z gyorgybalassy.wordpress.com/2012/09/24/… ? który jest lepszy sposób?
Kiquenet,

9
Przez godzinę wpatrywałem się w stronę „Role serwera”. Nie miałem pojęcia, że ​​możesz po prostu kliknąć „Dalej” lub „Funkcje” po lewej stronie. o_O +1
Dan Bechard

219

Musiałem włączyć HTTP Activationw .NET Framework 4.5 Advanced Services>WCF Services

Włącz aktywację HTTP


10
to jest to, co trzeba zrobić dla Windows 8, gdzie nie ma Server Manager
Simon_Weaver

2
To jest odpowiedź, gdy
hostujesz

Aktywacja http. Czy to niezależnie od tego, czy używasz http / https? Czy zatem jest to skrótowa nazwa dla obu, czy też nadal istnieje potrzeba rozróżnienia?
Thomas

2
Napotkałem podobny problem na IIS 10, Aktywacja HTTP jest domyślnie wyłączona. Włączenie go rozwiązało problem od razu. Dzięki!
dhruvpatel

4
Działa w systemie Windows 10, IIS 10
watbywbarif

45

włącz następujące opcje „Włącz lub wyłącz funkcje systemu Windows”

a) .Net Framework 3.5 - Aktywacja WCF HTTP i aktywacja bez HTTP

b) wszystkie w ramach usług WCF


1
Musiałem tylko włączyć .Net Framework 3.5 - Aktywacja HTTP WCF
daveywc

40

Windows 8 z IIS8

  • Trafienie Windows+X
  • Wybierz Programs and Features(pierwszy element na liście)
  • Wybierz Turn Windows Features on or offpo lewej
  • Rozszerzać .NET Framework 4.5 Advanced Services
  • Rozszerzać WCF Services
  • Włączyć HTTP Activation

jakiś skrypt PowerShell do zrobienia tego programowo?
Kiquenet,

mamy jeden serwer, więc nigdy nie
wchodzę

28

W tej chwili wolę to robić za pomocą skryptu

REM install the needed Windows IIS features for WCF
dism /Online /Enable-Feature /FeatureName:WAS-WindowsActivationService
dism /Online /Enable-Feature /FeatureName:WAS-ProcessModel
dism /Online /Enable-Feature /FeatureName:WAS-NetFxEnvironment
dism /Online /Enable-Feature /FeatureName:WAS-ConfigurationAPI
dism /Online /Enable-Feature /FeatureName:WCF-HTTP-Activation
dism /Online /Enable-Feature /FeatureName:WCF-HTTP-Activation45

REM Feature Install Complete
pause

2
Dzięki dism /Online /Enable-Feature /FeatureName:WCF-HTTP-Activation dism /Online /Enable-Feature /FeatureName:WCF-HTTP-Activation45były mi wystarczające ...
Shubh

Jest to najlepszy sposób, aby to naprawić w nowej wersji systemu Windows Server 2012R2 +. Prawdopodobnie działa również w 2012 roku, ale na szczęście nie mam już tych, którzy mogliby to wypróbować.
Paul Sturm,

i używasz skryptu PowerShell ?
Kiquenet

@Kiquenet Te polecenia będą działać w PowerShell. Jeśli próbowałeś skopiować bezpośrednio polecenie Shubha, musisz dodać podział wiersza lub średnik po pierwszym poleceniu przed drugim poleceniem odrzucenia.
kb4000

10

Udało nam się rozwiązać błąd w systemie Windows Server 2012 przez:

  1. Usuwanie z „Kreatora usuwania ról i funkcji” .NET Framework 4.5 Funkcje / ASP.NET 4.5 i wszystkich jego funkcji zależnych
  2. Ponowna instalacja usuniętych funkcji.

Wydaje się, że przyczyną jest kolejność instalacji.

Upewnij się także, że masz aktywację HTTP w ramach usług WCF.


Zrobiłem to i chyba zabiłem mój serwer. Odinstalowałem tylko pliki asp.net w systemie iis, ale teraz kiedy się zdalnie dostaję, pojawia się czarny ekran i okno wiersza poleceń, tak jakby serwer był teraz tylko „rdzeniem serwera” ... :(
MGOwen,

@MGOwen po usunięciu niektórych funkcji .net 4.5 wygląda na to, że usuwa on również graficzną powłokę serwera, którą można dodać ponownie za pomocą niektórych poleceń.
John

3

W przypadku komputerów z systemem Windows 8 nie ma aplikacji „Server Manager” (przynajmniej nie mogłem jej znaleźć).

Chociaż udało mi się rozwiązać problem . Nie jestem pewien, w jakiej kolejności wykonałem następujące operacje, ale wygląda na to, że jedno / kilka poniższych działań pomaga:

  1. Włącz następujące „Włączanie lub wyłączanie funkcji systemu Windows” a) .Net Framework 3.5 - Aktywacja HTTP WCF i aktywacja bez HTTP b) wszystko w ramach usług WCF (jak określono w jednej z odpowiedzi na to pytanie)

  2. wykonano „ServiceModelReg.exe –i” w folderze „% windir% \ Microsoft.NET \ Framework \ v3.0 \ Windows Communication Foundation \”

  3. Zarejestrowana platforma ASP.NET 2.0 za pomocą dwóch poleceń (w folderze C: \ WINDOWS \ Microsoft.NET \ Framework \ v2.0.50727):

    aspnet_regiis -ga "NT AUTHORITY \ NETWORK SERVICE" aspnet_regiis -iru

  4. Zrestartowałem komputer ... wygląda na to, że w działaniach ## 3 i 4 coś się popsuło w mojej konfiguracji ASP.NET

  5. Powtórz czynność # 2

  6. Zainstaluj dwie inne opcje z „Programy i funkcje”: Zaawansowane usługi .Net Framework 4.5. Sprawdziłem obie opcje podrzędne: ASP.NET 4.5 i usługi WCF

  7. Uruchom ponownie pulę aplikacji.

Sekwencja jest trochę szalona, ​​ale pomogło mi to i prawdopodobnie pomoże innym


Kluczem jest włączenie aktywacji HTTP.
Umar Farooq Khawaja



2

Za pomocą programu PowerShell można zainstalować wymaganą funkcję za pomocą:

Add-WindowsFeature 'NET-HTTP-Activation'

1

W systemie Windows 10 (klient) można to również wykonać za pomocą skryptu

Enable-WindowsOptionalFeature -Online -NoRestart -FeatureName WCF-HTTP-Activation45 -All

Zauważ, że jest to inne polecenie niż skus serwera


0

Wymagana jest również funkcja aktywacji HTTP w .NET Framework. Funkcja aktywacji procesów systemu Windows


0

To było dla mnie naprawdę głupie. Dodając to tutaj, ponieważ jest to jeden z bardziej popularnych wątków dotyczących problemów z svc 404.

W moim ustawieniach projektu „\ Web \ Project URL” wkleiłem:

http://blah.webservice.local.blahblah.com/Blah.svc

I z jakiegoś nieznanego powodu (robiąc to tysiąc razy) nie od razu zauważył, że nazwa pliku .svc jest na końcu.

DOH!

Właśnie wkleiłem adres mojego klienta testowego WCF i nie sprawdziłem go wystarczająco. To, co zrobiło to w tle, polegało na utworzeniu aplikacji IIS pod adresem .svc i nic nie otrzymywałem z IIS. Nie mogłem zrozumieć, w jaki sposób nie mogłem nawet trafić do pliku .svc.

Prosta poprawka, oczywiście, po prostu usuń aplikację w IIS i zmień adres URL projektu.

Po prawie 20 latach nadal możesz popełniać błędy ucznia / debiutanta. Mam nadzieję, że to komuś pomoże.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.