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
Attilah
quelle

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:

Tvanfosson
quelle
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"

Stefan Michev
quelle
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).
Aaron D.
quelle
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.

Inigo Surguy
quelle
1

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

esylvestre
quelle
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.

Mike Gledhill
quelle
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.

Al Nolan
quelle
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.

user405723
quelle
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 . :) :)

Raj Kumar
quelle
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äß.

phuongdnguyen
quelle
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

Martinoss
quelle
0

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

Brian King
quelle
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!

Smyrnian
quelle