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
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
quelle
path="*.svc"
undverb="*"
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).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. "
quelle
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.
quelle
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.
quelle
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.
quelle
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
quelle