HTTP 404 podczas uzyskiwania dostępu do pliku SVC w usługach IIS

86

Niedawno utworzyłem usługę WCF, która działa dobrze podczas testowania z Visual Studio 2008. ale kiedy wdrażam projekt w IIS i próbuję uzyskać dostęp do pliku .svc z IIS, pojawia się ten błąd:

"Server Error in '/' Application.The resource cannot be found.  "

Mam ten problem od 4 dni.

w Handler Mappings of IIS Manager widzę dwa wpisy dla .svc:

svc-Integrated and svc-ISAPI-2.0
Attilah
źródło

Odpowiedzi:

75

Musisz dodać mapowanie rozszerzenia SVC do ASP.NET. Najłatwiej to zrobić, uruchamiając ServiceModelReg.exe -iz C: \ Windows \ Microsoft.NET \ Framework \ v3.0 \ Windows Communication Foundation. Może być również konieczne włączenie ASP.NET, jeśli jeszcze tego nie zrobiłeś.


Jeśli używasz systemu Windows Server 2012 lub 2016, postępuj zgodnie z poniższymi instrukcjami:

tvanfosson
źródło
Czy próbowałeś później ponownie uruchomić usługi IIS?
tvanfosson
Czy masz teraz mapowanie MIME dla .svc?
tvanfosson
To nie jest mapowanie MIME - mapowanie rozszerzeń aplikacji. zobacz msdn.microsoft.com/en-us/library/ms752252(v=vs.90).aspx .
Michael Freidgeim
22
Ważne: nie rób tego na serwerze 2012 z zainstalowanym oprogramowaniem .NET 4.5. Spieprzyło mnie to, dopóki nie uruchomiłem ServiceModelReg.exe -ua. Zobacz tutaj rozwiązanie Server 2012: stackoverflow.com/questions/11116134/ ...
Scott Anderson
109

Co mi pomogło, w systemie Windows 2012 Server R2:

WCF HTTP 404

Podziękowania dla „Aarona D”

Stefan Michev
źródło
3
Zdecydowanie najłatwiejsza opcja.
BIDeveloper
U mnie to zadziałało na komputerach stacjonarnych Win10, Win8.1 i serwerze Win2012 :) Dzięki!
Skipper
To zadziałało dla mnie na komputerach stacjonarnych Win10, Win8.1 i serwerze Win2012 :) Dzięki!
Skipper
2
Z jakiegoś powodu musiałem zainstalować tę funkcję zarówno dla 3.5, jak i dla 4.5, i przez wiersz poleceń: dism /online /enable-feature /featurename:WCF-http-Activation45 /all a także dism /online /enable-feature /featurename:WCF-http-Activation /all
Rocklan
1
Działa również na Sever 2019
Zar Shardan
56

Znalazłem te instrukcje w poście na blogu, który wskazywał na ten krok, który zadziałał dla mnie (Windows 8, 64-bit):

Upewnij się, że w funkcjach systemu Windows są zaznaczone obie opcje WCF w ramach platformy .NET. Przejdź do Panelu sterowania -> Programy i funkcje -> Włącz / wyłącz funkcje systemu Windows -> Funkcje -> Dodaj funkcje -> Funkcje .NET Framework XX. Upewnij się, że platforma .Net mówi, że jest zainstalowana, i upewnij się, że węzeł aktywacji WCF pod nim jest zaznaczony (zaznaczone pole wyboru) i obie opcje w obszarze Aktywacja WCF są również zaznaczone.
To są:
* Aktywacja HTTP
* Aktywacja bez HTTP
Należy wybrać obie opcje (zaznaczone pole wyboru).
Aaron D.
źródło
2
Gdybym mógł zagłosować za tym więcej niż raz, zrobiłbym to, to doprowadzało mnie do NUTS, na zdrowie!
Chris W.
4

Widzę, że już rozwiązałeś swój problem - ale dla potomności:

Mieliśmy podobny problem, a program obsługi SVC był już poprawnie zainstalowany. Nasz problem polegał na tym, że program obsługi ExtensionlessUrl przetwarzał żądania, zanim dotarły one do modułu obsługi SVC.

Aby to sprawdzić - w Mapach obsługi w Menedżerze usług IIS na poziomie serwera WWW wyświetl listę programów obsługi w kolejności (jest to opcja po prawej stronie). Jeśli różne programy obsługi ExtensionlessUrl pojawiają się nad programami obsługi SVC, kilkakrotnie przesuwaj je w dół, aż znajdą się na dole.

Inigo Surguy
źródło
1

Sprawdza, czy katalog został przekonwertowany na aplikację, która jest usługą IIS.

esylvestre
źródło
1

Miałem dzisiaj ten sam problem.

Dla mnie rozwiązaniem było przejście do IIS, kliknięcie prawym przyciskiem myszy nowej nazwy witryny sieci Web, wybranie Właściwości, ASP.Net i zmiana wersji ASP.Net z „1.1.4322” (którą ustawiono jako domyślną) do 2.0.50727.

Gdy już to zrobiłem, mogłem kliknąć prawym przyciskiem myszy plik .svc, kliknąć „Przeglądaj” i wyświetlić przyjazną stronę serwisu.

Mike Gledhill
źródło
1

Może to również stać się problemem po włączeniu zgodności zarządzania usługami IIS 6 w systemie Windows 10. Ustawienie aktywacji HTTP struktury w ramach usług WCF rozwiąże problem.

Al Nolan
źródło
0

W moim przypadku błąd był spowodowany nieprawidłowymi ustawieniami mapowania w pliku applicationhost.config (\ System32 \ inetsrv \ config). Z jakiegoś powodu program Visual Studio 2013 uszkodził go podczas tworzenia katalogu wirtualnego w usługach IIS. Poprawka polegała na ręcznej edycji sekcji witryn w pliku.

user405723
źródło
0

Istnieją 2 wersje platformy .net dostępne w ramach funkcji dodawania roli / funkcji w serwerze 2012

za. 3.5

b. 4.5

W zależności od używanej struktury można włączyć aktywację HTTP w usługach WCF. :)

Raj kumar
źródło
0

W moim przypadku Win 10. plik applicationHost.config jest uszkodzony przez VS 2012. I możesz pobrać kopię historii tego pliku w C: \ inetpub \ history. Następnie uruchom ponownie usługi IIS i działa poprawnie.

phuongdnguyen
źródło
0

Musiałem dodać rozszerzenie .svc do dozwolonych rozszerzeń w ustawieniach filtrowania żądań (wcześniej otrzymałem błędy 404.7).

wprowadź opis obrazu tutaj

martinoss
źródło
0

Dodanie sufiksu .svc, który jest dozwolony w filtrowaniu żądań, załatwiło sprawę.

Brian King
źródło
0

Żadne z powyższych rozwiązań nie rozwiązało za mnie tego błędu. Musiałem ustawić w web.config:

system.servicemodel > bindings > webHttpBinding > binding:
<security mode="Transport">
  <transport clientCredentialType="None" />
</security>

Chciałbym skorzystać z okazji i jeszcze raz PRZEKLĄĆ Microsoft za stworzenie tak ogromnego bałaganu w .NET Framework i utrudnianie życia programistom przez tak długi czas!

Smyrnian
źródło