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
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
źródło
path="*.svc"
averb="*"
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).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. ”
źródło
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.
źródło
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.
źródło
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.
źródło
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
źródło