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

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:


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”


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).

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.


1

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


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.


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.


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.


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. :)


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.


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


0

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


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!

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.