Błąd HTTP 404.3 - Nie znaleziono ”podczas przeglądania usługi WCF w systemie Windows Server 2008 (64-bitowy)

88

Tworzę aplikację opartą na .Net Framework 3.5 sp1 i hostowaną na serwerze Windows 2008 (64bit).

Podczas przeglądania usługi wcf (.svc) lokalnie wszystko jest w porządku, ale podczas przeglądania z pełnym adresem URL domeny wystąpił błąd.

lokalny adres jest taki: http: //localhost/MyService.svc

a adres domeny wygląda tak: http://MySite.ir/MyService.svc

przy okazji strony (.aspx) i inne pliki działają poprawnie zarówno na serwerze lokalnym, jak iz adresem domeny.

każdy Pomysł byłby doceniony

Oto szczegółowy błąd:


Błąd HTTP 404.3 - nie znaleziono

Strona, o którą prosisz, nie może być obsługiwana z powodu konfiguracji rozszerzenia. Jeśli strona jest skryptem, dodaj procedurę obsługi. Jeśli plik ma zostać pobrany, dodaj mapę MIME. Szczegółowe informacje o błędzie

Moduł: StaticFileModule

Powiadomienie: ExecuteRequestHandler

Handler: StaticFile

Kod błędu: 0x80070032

Żądany adres URL: http://MySite.ir:80/MyService.svc

Ścieżka fizyczna: D: \ inetpub \ vhosts \ MySite.ir \ httpdocs \ MyService.svc

Metoda logowania: anonimowa

Logowanie użytkownika anonimowego

Mori
źródło

Odpowiedzi:

224

Upewnij się, że aktywowałeś komponenty WCF z tego miejsca .

Lub alternatywnym i łatwym sposobem jest przejście do panelu sterowania -> Włącz lub wyłącz funkcję Windows -> i upewnij się, że masz zaznaczone wszystkie opcje, jak wspomniano na poniższym zrzucie ekranu.

wprowadź opis obrazu tutaj

Może być konieczne aktywowanie każdego pola i zaakceptowanie go w przypadku wystąpienia błędów podczas aktywowania wszystkich funkcji jednocześnie

Nirav Mehta
źródło
36
.Net Framework 4.5 Zaawansowane usługi -> Sprawdź usługi WCF i -> Aktywacja HTTP zrobiła to za mnie!
devHead
3
Windows Server 2012 - potrzebna była tylko aktywacja HTTP i zaznaczone udostępnianie portów.
dibs487
2
Dodałbym do tej odpowiedzi, aby aktywować pola jeden po drugim. Wszystkie testy w tym samym czasie mogą się nie powieść. Dzieje się to w systemie Windows Server 2012.
harveyt
2
ta odpowiedź powinna być u góry
markthewizard1234
3
To jest poprawna odpowiedź. To rozwiązało problem i nie musiałem ręcznie niczego dodawać do mapowań obsługi programu IIS.
Anthony
25

OK, oto odpowiedź:

Przejdź do Mapowania obsługi | Dodaj Handler Managera -> A następnie dodaj poniższe informacje

Ścieżka żądania: * .svc

Typ: System.ServiceModel.Activation.HttpHandler, System.ServiceModel, Version = 3.0.0.0, Culture = neutral, PublicKeyToken = b77a5c561934e089

Nazwa: svc-Integrated

Mori
źródło
3
Dla każdego, kto chce dodać to do swojego pliku web.config, działa to dla mnie w projekcie .NET 4.5: <add name = "svc-Integrated" path = " .svc" verb = " " type = "System.ServiceModel. Activation.HttpHandler, System.ServiceModel.Activation, Version = 4.0.0.0, Culture = neutral, PublicKeyToken = 31bf3856ad364e35 "/>
Stefan Mohr
6
Dla mnie dodanie linii z @StefanMohr do Web.config nie do końca działało. Jednak zmieniłem path="*.svc"a verb="*"i to działało świetnie. Tak więc linia, której użyłem, która działała, to: <add name="svc-Integrated" path="*.svc" verb="*" type="System.ServiceModel.Activation.HttpHandler, System.ServiceModel.Activation, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>(dodana w configuration / system.webServer / handlers).
Aron Boyette
11

Jeśli ktoś ma ten problem w systemie Windows Server 2012, odpowiedź Billa Moona tutaj rozwiązała go dla mnie:

„W przypadku systemu Windows Server 2012 ... W Menedżerze serwera kliknij Dodaj role i funkcje, wybierz odpowiedni serwer, a następnie wybierz opcję Funkcje. W obszarze Funkcje .NET Framework 4.5 zobaczysz Usługi WCF, a pod nimi znajdź aktywację HTTP. ”

Będzie
źródło
1
W każdej istniejącej aplikacji internetowej po dodaniu funkcji systemu Windows będziesz musiał również wykonać następujące czynności: - Uruchom inetmgr - Otwórz „Mapowania obsługi” - Sprawdź, czy są obecne mapowania svc-ISAPI dla rozszerzenia * .svc. Jeśli nie, użyj czynności „Przywróć do nadrzędnego”, aby skopiować je z witryny nadrzędnej. Należy zauważyć, że zakłada się, że niestandardowe mapowania obsługi są skonfigurowane w pliku web.config dla aplikacji, jak to zwykle ma miejsce w usługach IIS7 +. Jeśli nie, stracisz je podczas wykonywania „Przywróć rodzica”.
Berend Engelbrecht
8

Mam Windows 10 w moim laptopie i używam Visual Studio 2015 do programowania WCF. WCF działa dobrze w programie Visual Studio, ale podczas hostowania w usługach IIS pojawia się ten sam błąd.

Sprawdziłem obsługę IIS. Brak rozszerzenia svc. Próbowałem więc dodać nowy program obsługi w IIS, zgodnie z sugestią Mori w pierwszej odpowiedzi. Nie znalazłem typu „System.ServiceModel.Activation.HttpHandler”.

Otworzyłem więc „Włącz lub wyłącz funkcje systemu Windows” i zainstalowałem funkcje, jak zaznaczono na zrzucie ekranu.

To zadziałało dla mnie.

wprowadź opis obrazu tutaj

Indygowiec
źródło
0

Jeśli używasz .Net 4.x, PublicKeyToken to 31bf3856ad364e35.

Jednak po tym poście dotyczącym prawidłowego instalowania usług WCF w usługach IIS program obsługi został skonfigurowany dla mnie.

Thomas Hagström
źródło
0

Chciałem to dodać jako komentarz do odpowiedzi, ale nie miałem za to wystarczającej reputacji. Próbowałem uruchomić ServiceModelReg i aspnet_regiis.exe z różnymi flagami i dodałem funkcję aktywacji HTTP, ale nadal nie działała. Nawet użycie interfejsu użytkownika mapowania obsługi w usługach IIS nie działało, ponieważ nie można było znaleźć System.ServiceModel.Activation.HttpHandler. Ostatecznie zadziałało dodanie obsługi, o której wspomina Mori, ręcznie do mojego pliku web.config.

<system.webServer>
    <handlers>
      <add name="svc-Integrated" path="*.svc" verb="GET,HEAD,POST,DEBUG" type="System.ServiceModel.Activation.HttpHandler, System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" modules="ManagedPipelineHandler" scriptProcessor="" resourceType="Unspecified" requireAccess="Script" allowPathInfo="false" preCondition="integratedMode" responseBufferLimit="4194304" />

W moim projekcie działał .Net 3.5 i IIS 7.5 w systemie Windows 7 i IIS 7.0 w systemie Win Server 2008 R2.

Janspeed
źródło
0

Spróbuj usunąć zaznaczenie aktywacji WCF HTTP w oknie „Włącz lub wyłącz funkcje systemu Windows” ( zobacz tutaj ) i zainstaluj ponownie, przechodząc do

%windir%\Microsoft.Net\Framework\v3.0\Windows Communication Foundation\

i wykonaj ServiceModelReg -i

Derviş Özçelik
źródło