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.

Carl R.
quelle

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.
Brian Jimdar
quelle
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

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

Dino
quelle
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
Simon_Weaver
quelle
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
Jon
quelle
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.

Radu Damian
quelle
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

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

Sunil Agarwal
quelle
2

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

Add-WindowsFeature 'NET-HTTP-Activation'
Owais F.
quelle
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

aL3891
quelle
0

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

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

Mobys Stunt Double
quelle