WCF auf IIS8; * .svc-Handlerzuordnung funktioniert nicht


272

Ich versuche, einen WCF-Dienst in IIS8 auf Build 8400 2012 zum Laufen zu bringen.

Bei der Installation der Webrolle war das wcf-Material (unter 3.51) nicht wie 2008 zu finden.

Bei der Installation fehlte die Zuordnung des SVC-Handlers, daher habe ich Folgendes ausgeführt:

%windir%\Microsoft.NET\Framework\v3.0\WindowsCommunication Foundation\ServiceModelReg.exe i

Jetzt ist das Handler-Mapping da, aber ich bekomme immer noch:

The resource you are looking for does not have a handler associated with it.

(Ich habe den statischen Datei-Handler entfernt.)

Die Site verwendet die klassische Pipeline, um den Identitätswechsel zu verwenden.

Antworten:


553

Genauer:

  1. Ausführen Server Manager(in der Taskleiste und im Startmenü)
  2. Wählen Sie den zu verwaltenden Server aus (wahrscheinlich lokaler Server).
  3. Scrollen Sie nach unten zum Roles and FeaturesAbschnitt " ".
  4. Wählen Sie " Add Role or Feature" aus der Dropdown- Liste " Aufgaben"
  5. Ein „ Add Role or Feature Wizard“ Dialog klicken Sie auf down „ Features“ in der Liste der Seiten auf der linken Seite.
  6. Erweitern Sie ".Net 3.5"oder ".Net 4.5", je nachdem, was Sie installiert haben. (Sie können zum rolesBildschirm " " zurückkehren, um ihn hinzuzufügen, wenn Sie keinen haben.
  7. Aktivieren Sie unter " WCF Services" das Kontrollkästchen für " HTTP-Activation". Sie können auch Nicht-http-Typen hinzufügen, wenn Sie wissen, dass Sie sie benötigen (TCP, Named Pipes usw.).
  8. Klicken Sie auf die "Install"Schaltfläche.

6
Dieser hat in meinem Fall nicht funktioniert, weil ich unter Windows 8 (mit IIS 8) bin.
Josh Mouch

9
Wenn Sie ServiceModelReg.exe –i zum ersten Mal aus dem Verzeichnis v3.0 ausgeführt haben, müssen Sie auch ServiceModelReg.exe –ua ausführen, um es rückgängig zu machen, bevor dies funktioniert.
Scott Anderson

14
Über die Befehlszeile: dism / Online / Enable-Feature / FeatureName: WCF-HTTP-Aktivierung / Alle
Richard

4
Was ist mit gyorgybalassy.wordpress.com/2012/09/24/… ? Welcher Weg ist besser?
Kiquenet

9
Ich starrte buchstäblich eine Stunde lang auf die Seite "Serverrollen". Ich hatte keine Ahnung, dass Sie einfach auf "Weiter" oder links auf "Funktionen" klicken können. o_O +1
Dan Bechard

219

Ich musste HTTP Activationin .NET Framework 4.5 Advanced Services> aktivierenWCF Services

Aktivieren Sie die HTTP-Aktivierung


10
Dies ist, was Sie für Windows 8 tun müssen, wo es keinen Server-Manager gibt
Simon_Weaver

2
Dies ist die Antwort, wenn Sie den WCF-Dienst in Windows 8 und Windows 8.1
vcRobe

Die http-Aktivierung. Ist es unabhängig davon, ob Sie http / https verwenden? Ist das also ein zusammenfassender Name für beide oder ist dort noch eine Unterscheidung erforderlich?
Thomas

2
Ich hatte ein ähnliches Problem mit IIS 10, die HTTP-Aktivierung ist standardmäßig deaktiviert. Durch Aktivieren wurde das Problem sofort behoben. Vielen Dank!
Dhruvpatel

4
Funktioniert für Windows 10, IIS 10
Watbywbarif

45

Aktivieren Sie Folgendes unter "Windows-Funktionen aktivieren oder deaktivieren".

a) .Net Framework 3.5 - WCF-HTTP-Aktivierung und Nicht-HTTP-Aktivierung

b) alle unter WCF Services


1
Ich musste nur .Net Framework 3.5 - WCF HTTP-Aktivierung
daveywc

40

Windows 8 mit IIS8

  • Schlagen Windows+X
  • Wählen Sie Programs and Features(erstes Element in der Liste)
  • Wählen Sie Turn Windows Features on or offlinks
  • Erweitern .NET Framework 4.5 Advanced Services
  • Erweitern WCF Services
  • Aktivieren HTTP Activation

Gibt es ein Powershell-Skript, um es programmgesteuert auszuführen?
Kiquenet

Wir haben einen Server, damit ich nie in die fortgeschrittene Powershell
komme

28

Ich mache das heutzutage lieber über ein Skript

REM install the needed Windows IIS features for WCF
dism /Online /Enable-Feature /FeatureName:WAS-WindowsActivationService
dism /Online /Enable-Feature /FeatureName:WAS-ProcessModel
dism /Online /Enable-Feature /FeatureName:WAS-NetFxEnvironment
dism /Online /Enable-Feature /FeatureName:WAS-ConfigurationAPI
dism /Online /Enable-Feature /FeatureName:WCF-HTTP-Activation
dism /Online /Enable-Feature /FeatureName:WCF-HTTP-Activation45

REM Feature Install Complete
pause

2
Danke dism /Online /Enable-Feature /FeatureName:WCF-HTTP-Activation dism /Online /Enable-Feature /FeatureName:WCF-HTTP-Activation45war genug für mich ...
Shubh

Dies ist der beste Weg, um dies auf einer neuen 2012R2 + -Version von Windows Server zu beheben. Funktioniert wahrscheinlich auch 2012, aber zum Glück habe ich keine mehr, um das auszuprobieren.
Paul Sturm

und PowerShell- Skript verwenden ?
Kiquenet

@Kiquenet Diese Befehle funktionieren alle in Powershell. Wenn Sie versucht haben, Shubhs Befehl direkt zu kopieren, müssen Sie nach dem ersten Befehl vor dem zweiten Befehl dism einen Zeilenumbruch oder ein Semikolon einfügen.
kb4000

10

Wir haben es geschafft, den Fehler unter Windows Server 2012 zu beheben, indem wir:

  1. Entfernen aus dem Assistenten zum Entfernen von Rollen und Funktionen .NET Framework 4.5-Funktionen / ASP.NET 4.5 und alle zugehörigen Funktionen
  2. Neuinstallation der entfernten Funktionen.

Es scheint, dass die Reihenfolge der Installation die Ursache ist.

Stellen Sie außerdem sicher, dass Sie die HTTP-Aktivierung unter WCF Services installiert haben.


Ich habe das getan und scheint meinen Server getötet zu haben. Ich habe nur das asp.net-Zeug unter iis deinstalliert, aber jetzt, wenn ich remote bin, bekomme ich einen schwarzen Bildschirm und ein Eingabeaufforderungsfenster, als wäre der Server jetzt nur noch "Serverkern" ... :(
MGOwen

@MGOwen Wenn Sie einige der Funktionen von .net 4.5 entfernen, wird anscheinend auch die grafische Server-Shell entfernt. Dies kann mit einigen Befehlen erneut hinzugefügt werden.
John

3

Für Windows 8-Computer gibt es keine "Server Manager" -Anwendung (zumindest konnte ich sie nicht finden).

Obwohl ich das Problem lösen konnte . Ich bin mir nicht sicher, in welcher Reihenfolge ich die folgenden Operationen ausgeführt habe, aber es sieht so aus, als ob eine / mehrere der folgenden Aktionen helfen:

  1. Aktivieren Sie Folgendes unter "Windows-Funktionen aktivieren oder deaktivieren". A) .Net Framework 3.5 - WCF-HTTP-Aktivierung und Nicht-HTTP-Aktivierung b) Alle unter WCF-Dienste (wie in einer der Antworten auf diese Frage angegeben).

  2. "ServiceModelReg.exe –i" im Ordner "% windir% \ Microsoft.NET \ Framework \ v3.0 \ Windows Communication Foundation \" ausgeführt

  3. Registrierte ASP.NET 2.0 über zwei Befehle (im Ordner C: \ WINDOWS \ Microsoft.NET \ Framework \ v2.0.50727):

    aspnet_regiis -ga "NT AUTHORITY \ NETWORK SERVICE" aspnet_regiis -iru

  4. PC neu gestartet ... es sieht so aus, als ob bei den Aktionen ## 3 und 4 in meiner ASP.NET-Konfiguration etwas kaputt gegangen ist

  5. Wiederholen Sie Aktion 2

  6. Installieren Sie zwei weitere Optionen unter "Programme und Funktionen": .Net Framework 4.5 Advanced Services. Ich habe beide Unteroptionen überprüft: ASP.NET 4.5- und WCF-Dienste

  7. Starten Sie den App-Pool neu.

Sequenz ist irgendwie verrückt, aber das hat mir geholfen und wird wahrscheinlich auch anderen helfen


Das Schlüsselbit aktiviert die HTTP-Aktivierung.
Umar Farooq Khawaja


2

Die Reihenfolge der Installation spielt bei der Konfiguration von IIS 8 unter Windows 8 oder Windows Server 2012 eine wichtige Rolle.

Ich hatte viele Probleme bei der Konfiguration von IIS 8, aber schließlich haben mir diese Links geholfen


2

Mit PowerShell können Sie die erforderliche Funktion installieren mit:

Add-WindowsFeature 'NET-HTTP-Activation'

1

Unter Windows 10 (Client) können Sie dies auch mit skripten

Enable-WindowsOptionalFeature -Online -NoRestart -FeatureName WCF-HTTP-Activation45 -All

Beachten Sie, dass dies ein anderer Befehl als der Server-Skus ist


0

Die HTTP-Aktivierungsfunktion von .NET Framework Die Windows-Prozessaktivierungsfunktion ist ebenfalls erforderlich


0

Das war wirklich albern für mich. Fügen Sie dies hier hinzu, da es einer der beliebtesten Threads zu SVC 404-Problemen ist.

Ich hatte in der \ Web \ Project-URL meiner Projekteinstellungen Folgendes eingefügt:

http://blah.webservice.local.blahblah.com/Blah.svc

Und aus einem unbekannten Grund (nachdem ich dies tausendmal getan hatte) wurde nicht sofort festgestellt, dass der Name der .svc-Datei am Ende stand.

DOH!

Ich hatte gerade die Adresse von meinem WCF-Testclient eingefügt und sie nicht ausreichend überprüft. Im Hintergrund wurde eine IIS-Anwendung unter der .svc-Adresse erstellt, und ich habe nichts aus IIS herausgeholt. Ich konnte nicht herausfinden, wie ich nicht einmal die .svc-Datei treffen konnte.

Einfache Korrektur: Entfernen Sie einfach die Anwendung in IIS und ändern Sie die Projekt-URL.

Nach fast 20 Jahren können Sie immer noch Schüler- / Anfängerfehler machen. Hoffe das hilft jemandem.

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.