HTTP-Fehler 404.3 - Nicht gefunden "beim Durchsuchen des wcf-Dienstes unter Windows Server 2008 (64 Bit)

88

Ich entwickle eine Anwendung, die auf .NET Framework 3.5 sp1 basiert und auf Windows Server 2008 (64 Bit) gehostet wird.

Beim lokalen Durchsuchen des wcf-Dienstes (.svc) ist alles in Ordnung, aber beim Durchsuchen mit der vollständigen Domain-URL ist ein Fehler aufgetreten.

Die lokale Adresse lautet wie folgt : http: //localhost/MyService.svc

Die Domain-Adresse lautet wie folgt : http://MySite.ir/MyService.svc

Übrigens funktionieren Seiten (.aspx) und andere Dateien sowohl auf localhost als auch mit der Domänenadresse korrekt.

Jede Idee wäre willkommen

Hier ist ein detaillierter Fehler:


HTTP-Fehler 404.3 - Nicht gefunden

Die von Ihnen angeforderte Seite kann aufgrund der Erweiterungskonfiguration nicht bereitgestellt werden. Wenn es sich bei der Seite um ein Skript handelt, fügen Sie einen Handler hinzu. Wenn die Datei heruntergeladen werden soll, fügen Sie eine MIME-Map hinzu. Detaillierte Fehlerinformationen

Modul: StaticFileModule

Benachrichtigung: ExecuteRequestHandler

Handler: StaticFile

Fehlercode: 0x80070032

Angeforderte URL: http://MySite.ir:80/MyService.svc

Physischer Pfad: D: \ inetpub \ vhosts \ MySite.ir \ httpdocs \ MyService.svc

Anmeldemethode: Anonym

Anmeldebenutzer anonym

Mori
quelle

Antworten:

224

Bitte stellen Sie sicher, dass Sie WCF-Komponenten von hier aus aktiviert haben .

Oder gehen Sie alternativ und einfach zu Systemsteuerung -> Windows-Funktion ein- oder ausschalten -> und stellen Sie sicher, dass Sie alle Optionen aktiviert haben, wie im folgenden Screenshot erwähnt.

Geben Sie hier die Bildbeschreibung ein

Möglicherweise müssen Sie jede Box aktivieren und akzeptieren, falls beim gleichzeitigen Aktivieren aller Funktionen Fehler auftreten

Nirav Mehta
quelle
36
.Net Framework 4.5 Erweiterte Dienste -> WCF-Dienste überprüfen und -> HTTP-Aktivierung haben es für mich getan!
DevHead
3
Windows Server 2012 - nur HTTP-Aktivierung erforderlich und Portfreigabe aktiviert.
Dibs487
2
Ich würde dieser Antwort hinzufügen, um Boxen einzeln zu aktivieren. Alle Überprüfungen gleichzeitig können fehlschlagen. Es passiert in Windows Server 2012.
Harvey
2
Diese Antwort sollte oben sein
markthewizard1234
3
Dies ist die richtige Antwort. Dies löste das Problem für mich und ich musste den IIS-Handler-Zuordnungen nichts manuell hinzufügen.
Anthony
25

OK, hier ist die Antwort:

Gehen Sie zu Handler-Zuordnungen | Fügen Sie Handler Manager hinzu -> und fügen Sie dann die folgenden Informationen hinzu

Anforderungspfad: * .svc

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

Name: svc-Integrated

Mori
quelle
3
Für alle, die dies zu ihrer web.config-Datei hinzufügen möchten, funktioniert dies in einem .NET 4.5-Projekt: <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
Für mich hat das Hinzufügen der Zeile von @StefanMohr zur Web.config nicht ganz funktioniert. Allerdings habe ich geändert path="*.svc"und verb="*"es hat super funktioniert. Die Zeile, die ich verwendet habe, war also: <add name="svc-Integrated" path="*.svc" verb="*" type="System.ServiceModel.Activation.HttpHandler, System.ServiceModel.Activation, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>(hinzugefügt unter configuration / system.webServer / handlers).
Aron Boyette
11

Wenn jemand dieses Problem unter Windows Server 2012 hat, hat die Antwort von Bill Moon hier das Problem für mich gelöst:

"Für Windows Server 2012 ... Klicken Sie im Server-Manager auf Rollen und Funktionen hinzufügen, wählen Sie den entsprechenden Server aus und wählen Sie dann Funktionen aus. Unter .NET Framework 4.5-Funktionen wird WCF-Dienste angezeigt finde HTTP-Aktivierung. "

Wille
quelle
1
In jeder vorhandenen Webanwendung müssen Sie nach dem Hinzufügen der Windows-Funktion außerdem Folgendes tun: - Inetmgr starten - "Handler-Zuordnungen" öffnen - Überprüfen Sie, ob die SVC-ISAPI-Zuordnungen für die Erweiterung * .svc vorhanden sind. Wenn nicht, kopieren Sie sie mit der Aktion "Auf übergeordnetes Element zurücksetzen" von der übergeordneten Website. Beachten Sie, dass dies voraussetzt, dass benutzerdefinierte Handlerzuordnungen in web.config für die Anwendung konfiguriert sind, wie dies normalerweise in IIS7 + der Fall ist. Wenn nicht, verlieren Sie diese, wenn Sie "Auf Eltern zurücksetzen" ausführen.
Berend Engelbrecht
8

Ich habe Windows 10 in meinem Laptop und verwende Visual Studio 2015 für die WCF-Entwicklung. WCF läuft in Visual Studio einwandfrei, aber beim Hosten in IIS wurde der gleiche Fehler angezeigt.

Ich habe den IIS-Handler überprüft. SVC-Erweiterung fehlte. Also habe ich versucht, einen neuen Handler in IIS hinzuzufügen, wie von Mori in der ersten Antwort vorgeschlagen. Ich habe den Typ "System.ServiceModel.Activation.HttpHandler" nicht gefunden.

Also habe ich "Windows-Funktionen ein- oder ausschalten" geöffnet und Funktionen installiert, wie im Screenshot hervorgehoben.

Das hat bei mir funktioniert.

Geben Sie hier die Bildbeschreibung ein

Anil
quelle
0

Wenn Sie .Net 4.x verwenden, lautet das PublicKeyToken 31bf3856ad364e35.

Nach diesem Beitrag zur ordnungsgemäßen Installation von WCF-Diensten in IIS wurde der Handler jedoch für mich eingerichtet.

Thomas Hagström
quelle
0

Ich wollte dies als Kommentar zur Antwort hinzufügen, hatte aber nicht genug Repräsentanten dafür. Ich habe versucht, ServiceModelReg und aspnet_regiis.exe mit verschiedenen Flags auszuführen und die HTTP-Aktivierungsfunktion hinzugefügt, aber es hat immer noch nicht funktioniert. Selbst die Verwendung der Handler-Zuordnungs-Benutzeroberfläche in IIS funktionierte nicht, da System.ServiceModel.Activation.HttpHandler nicht gefunden werden konnte. Was schließlich funktionierte, war das manuelle Hinzufügen des von Mori erwähnten Handlers zu meiner web.config-Datei.

<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" />

In meinem Projekt wurden .Net 3.5 und IIS 7.5 unter Windows 7 und IIS 7.0 unter Win Server 2008 R2 ausgeführt.

Janspeed
quelle
0

Deaktivieren Sie das Kontrollkästchen WCF-HTTP-Aktivierungen im Fenster "Windows aktivieren oder deaktivieren" ( siehe hier ) und installieren Sie es erneut, indem Sie auf gehen

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

und ausführen ServiceModelReg -i

Derviş Özçelik
quelle