HTTP 404 beim Zugriff auf die SVC-Datei in IIS


82

Ich habe kürzlich einen WCF-Dienst erstellt, der beim Testen in Visual Studio 2008 einwandfrei funktioniert. Wenn ich das Projekt jedoch auf IIS bereitstelle und versuche, über IIS auf die SVC-Datei zuzugreifen, wird folgende Fehlermeldung angezeigt:

"Server Error in '/' Application.The resource cannot be found.  "

Ich habe dieses Problem seit 4 Tagen.

In den Handlerzuordnungen von IIS Manager werden zwei Einträge für .svc angezeigt:

svc-Integrated and svc-ISAPI-2.0

Antworten:


75

Sie müssen ASP.NET eine Zuordnung für die SVC-Erweiterung hinzufügen. Der einfachste Weg, dies zu tun, ist die Ausführung ServiceModelReg.exe -iunter C: \ Windows \ Microsoft.NET \ Framework \ v3.0 \ Windows Communication Foundation. Möglicherweise müssen Sie auch ASP.NET aktivieren, falls Sie dies noch nicht getan haben.


Wenn Sie Windows Server 2012 oder 2016 verwenden, befolgen Sie stattdessen diese Anweisungen:


Haben Sie versucht, IIS anschließend neu zu starten?
Tvanfosson

Haben Sie jetzt eine MIME-Zuordnung für .svc?
Tvanfosson

Es ist kein Mime-Mapping - Application Extension Mapping. Siehe msdn.microsoft.com/en-us/library/ms752252(v=vs.90).aspx .
Michael Freidgeim

22
Wichtig: Tun Sie dies nicht auf Server 2012 mit installiertem .NET 4.5. Es hat mich fertig gemacht, bis ich dann ServiceModelReg.exe -ua ausgeführt habe. Die Server 2012-Lösung finden Sie hier: stackoverflow.com/questions/11116134/…
Scott Anderson

104

Was hat bei mir unter Windows 2012 Server R2 funktioniert:

WCF HTTP 404

Danke geht an "Aaron D"


3
Bei weitem die einfachste Option.
BIDeveloper

Das hat bei mir auf Win10, Win8.1 Desktops und Win2012 Server funktioniert :) Danke!
Skipper

Das hat bei mir auf Win10, Win8.1 Desktops und Win2012 Server funktioniert :) Danke!
Skipper

2
Aus irgendeinem Grund musste ich die Funktion sowohl für 3.5 als auch für 4.5 und über die Befehlszeile installieren: dism /online /enable-feature /featurename:WCF-http-Activation45 /all und auch dism /online /enable-feature /featurename:WCF-http-Activation /all
Rocklan

Funktioniert auch auf Sever 2019
Zar Shardan

56

Ich habe diese Anleitung in einem Blogbeitrag gefunden , der auf diesen Schritt hinwies, der für mich funktionierte (Windows 8, 64-Bit):

Stellen Sie sicher, dass in Windows-Funktionen beide WCF-Optionen unter .NET-Framework aktiviert sind. Gehen Sie also zu Systemsteuerung -> Programme und Funktionen -> Windows-Funktionen ein- / ausschalten -> Funktionen -> Funktionen hinzufügen -> .NET Framework XX-Funktionen. Stellen Sie sicher, dass das .Net-Framework anzeigt, dass es installiert ist, und stellen Sie sicher, dass der darunter liegende WCF-Aktivierungsknoten aktiviert ist (Kontrollkästchen aktiviert) und beide Optionen unter WCF-Aktivierung ebenfalls aktiviert sind.
Diese sind:
* HTTP-Aktivierung
* Nicht-HTTP-Aktivierung
Beide Optionen müssen ausgewählt sein (Kontrollkästchen aktiviert).

2
Wenn ich dies mehr als einmal positiv bewerten könnte, würde mich das NUTS antreiben, Prost!
Chris W.

4

Ich sehe, Sie haben Ihr Problem bereits gelöst - aber für die Nachwelt:

Wir hatten ein ähnliches Problem und der SVC-Handler war bereits korrekt installiert. Unser Problem waren die Verarbeitungsanforderungen des ExtensionlessUrl-Handlers, bevor sie den SVC-Handler erreichten.

Um dies zu überprüfen, zeigen Sie in Handlerzuordnungen in IIS Manager auf Webserverebene die Liste der Handler in der angegebenen Reihenfolge an (dies ist eine Option auf der rechten Seite). Wenn die verschiedenen ExtensionlessUrl-Handler über den SVC-Handlern angezeigt werden, verschieben Sie sie wiederholt nach unten, bis sie unten angezeigt werden.


1

Überprüft, ob Ihr Verzeichnis in eine Anwendung konvertiert wurde, die Ihr IIS ist.


1

Ich hatte heute das gleiche Problem.

Für mich bestand die Lösung darin, in IIS zu wechseln, mit der rechten Maustaste auf den neuen Website-Namen zu klicken, Eigenschaften, ASP.Net auszuwählen und die ASP.Net-Version von "1.1.4322" (die als Standard festgelegt wurde) zu ändern. bis 2.0.50727.

Sobald ich das getan hatte, konnte ich mit der rechten Maustaste auf die .svc-Datei klicken, auf "Durchsuchen" klicken und die freundliche Service-Webseite sehen.


1

Dies kann auch zu einem Problem werden, nachdem die IIS 6-Verwaltungskompatibilität in Windows 10 aktiviert wurde. Durch Festlegen der HTTP-Aktivierung des Frameworks unter WCF Services wird das Problem behoben.


0

In meinem Fall wurde der Fehler durch falsche Zuordnungseinstellungen in der Datei applicationhost.config (\ System32 \ inetsrv \ config) verursacht. Aus irgendeinem Grund wurde es von Visual Studio 2013 beim Erstellen eines virtuellen Verzeichnisses in IIS beschädigt. Das Update bestand darin, den Abschnitt "Sites" in der Datei manuell zu bearbeiten.


0

Es gibt 2 .net Framework-Versionen, die unter den Funktionen unter Rolle / Funktionen in Server 2012 hinzufügen angegeben sind

ein. 3.5

b. 4.5

Je nach verwendetem Framework können Sie die HTTP-Aktivierung unter WCF-Diensten aktivieren . :) :)


0

In meinem Fall Win 10. ist die Datei applicationHost.config durch VS 2012 beschädigt. Sie können den Verlauf dieser Datei unter C: \ inetpub \ history kopieren. Starten Sie dann IIS neu und es funktioniert ordnungsgemäß.


0

Ich musste die Erweiterung .svc zu den zulässigen Erweiterungen in den Einstellungen für die Anforderungsfilterung hinzufügen (zuvor wurden 404.7-Fehler angezeigt).

Geben Sie hier die Bildbeschreibung ein


0

Das Hinzufügen des Suffixes .svc, wie es in der Anforderungsfilterung zulässig ist, hat den Trick für mich getan.


0

Keine der oben genannten Lösungen hat diesen Fehler für mich behoben. Ich musste in web.config Folgendes einstellen:

system.servicemodel > bindings > webHttpBinding > binding:
<security mode="Transport">
  <transport clientCredentialType="None" />
</security>

Ich möchte diese Gelegenheit nutzen, um Microsoft noch einmal zu verfluchen, weil es so ein großes Durcheinander mit .NET Framework verursacht und das Leben der Entwickler so lange so miserabel gemacht hat!

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.