WCF-Dienste in IIS unter Windows 8 können nicht bereitgestellt werden

198

Wenn ich versuche, einen WCF-Dienst auf IIS auf einem Windows 8-Computer bereitzustellen, wird der bekannte Fehler angezeigt

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.

Die alte Problemumgehung sollte ausgeführt werden, aspnet_regiis -iaber dieser Befehl scheint in Windows 8 veraltet zu sein und eine Antwort zu liefern This option is not supported on this version of the operating system. (...).

Was wäre die Arbeit um?

(Ich habe reguläre aspxSeiten bereits erfolgreich aktiviert , daher scheint der größte Teil der IIS-Konfiguration fehlerfrei zu sein.)

Faester
quelle
Weitere Informationen zum aspnet_regiis -iBefehl für Benutzer vor Windows 8 finden Sie unter folgendem Link: aspsnippets.com/Articles/…
David

Antworten:

404

Schien ein Kinderspiel zu sein; Der WCF-Dienst sollte Programs and Features -> Turn Windows features on or offin der Systemsteuerung aktiviert werden . Gehen Sie zu .NET Framework Advanced Services -> WCF Servicesund aktivieren Sie, HTTP Activationwie in diesem Blog-Beitrag auf mdsn beschrieben .

An der Eingabeaufforderung (als Administrator) können Sie Folgendes ausführen:

C:\> DISM /Online /Enable-Feature /FeatureName:WCF-HTTP-Activation
C:\> DISM /Online /Enable-Feature /FeatureName:WCF-HTTP-Activation45

Wenn Sie eine Fehlermeldung erhalten, verwenden Sie die folgenden

C:\> DISM /Online /Enable-Feature /all /FeatureName:WCF-HTTP-Activation
C:\> DISM /Online /Enable-Feature /all /FeatureName:WCF-HTTP-Activation45
Faester
quelle
6
Ich habe Zeit damit verbracht, in IIS Manager zu suchen. Ich denke, IIS Manager sollte ein Symbol haben, das den Benutzer über .NET Framework Advnaced Services informiert.
Tony_Henrich
Über die Eingabeaufforderung wurde die Fehlermeldung "Der Vorgang ist abgeschlossen, aber die WCF-HTTP-Aktivierungsfunktion wurde nicht aktiviert. Eine erforderliche übergeordnete Funktion ist möglicherweise nicht aktiviert. Mit der Option / enable-feature / all können Sie jede übergeordnete Funktion automatisch aktivieren aus der folgenden Liste. Wenn die übergeordneten Funktionen bereits aktiviert sind, finden Sie weitere Diagnosen in der Protokolldatei. " Ich habe stattdessen die GUI-Methode verwendet, um zu wissen, was ich eingeschaltet habe, und es hat funktioniert.
Ben Adams
5
Ich habe den gleichen Fehler "Eine erforderliche übergeordnete Funktion ist möglicherweise nicht aktiviert" wie Ben Anderson erhalten und den Vorschlag in der Fehlermeldung (Hinzufügen des /allArguments) ausprobiert , der dann einwandfrei funktioniert hat : DISM /Online /Enable-Feature /all /FeatureName:WCF-HTTP-Activation45.
Troy Gizzi
1
Sie, Sir, sind unglaublich. Sie können auch hinzufügen (es ist ein kleines Detail), dass dies abhängig von der .NET Framework-Version erfolgen kann. Wie in.NET 3.5 Framework Advanced Services -> Windows Communication Foundation HTTP Activation
rion18
Dies ist ein Lebensretter. Bei den meisten Online-Lösungen für dieses Problem aktivieren Sie .NET 3.5 Framework nur unter Webfunktionen. DAS IST NICHT GENUG. Sie müssen auch den hier genannten Schritt tun.
Markaaronky
95

Für Windows Server 2012 ist die Lösung der von faester sehr ähnlich (siehe oben). Klicken Sie im Server-Manager auf Add roles and features, wählen Sie den entsprechenden Server aus und wählen Sie dann Features. Darunter .NET Framework 4.5 Featureswirst du sehen WCF Servicesund darunter wirst du finden HTTP Activation.

Bill Moon
quelle
Danke dafür ! aber wie wäre es mit .Net 4? Sie denken, dass das Aktivieren dieser Funktionen dasselbe für .Net v4.0 bewirkt?
Aladdin Gallas
2
In jeder vorhandenen Webanwendung müssen Sie nach dem Hinzufügen der Windows-Funktion außerdem Folgendes tun: - Inetmgr starten - "Handler-Zuordnungen" öffnen - Überprüfen Sie, ob die SVC-ISAPI-Zuordnungen für die Erweiterung * .svc vorhanden sind. Wenn nicht, kopieren Sie sie mit der Aktion "Auf übergeordnetes Element zurücksetzen" von der übergeordneten Website. Beachten Sie, dass dies voraussetzt, dass benutzerdefinierte Handlerzuordnungen in web.config für die Anwendung konfiguriert sind, wie dies normalerweise in IIS7 + der Fall ist. Wenn nicht, verlieren Sie diese, wenn Sie "Auf Eltern zurücksetzen" ausführen.
Berend Engelbrecht
13

Führen Sie die folgenden zwei Schritte in IIS 8.0 aus

Fügen Sie den neuen MIME-Typ & HttpHandler hinzu

  1. Erweiterung: .svc, MIME-Typ: application / octet-stream

  2. Anforderungspfad: * .svc, Typ: System.ServiceModel.Activation.HttpHandler, Name: svc-Integrated

Jeneesh Velayudhan
quelle
Beste Lösung für meine sehr alte Windows 7-Installation, die nicht aktiviert werden kann - .Net 3.5 (HTTP- und Nicht-HTTP-Aktivierung) und WAS. Zu heikel, um das Betriebssystem neu zu installieren
user919426
Es lohnt sich, über diese Methode Bescheid zu wissen, insbesondere wenn Sie eigene Handler erstellen und hinzufügen. Wenn Sie jedoch die Option "Windows-Funktionen ein- und ausschalten" verwenden, erhalten Sie die meisten bekannten Dateierweiterungen, wodurch Sie Zeit sparen, jede einzeln hinzuzufügen (und alle korrekten Details
herauszufinden
11

Sie können dies auch erreichen, indem Sie die Windows-Funktion einschalten. Geben Sie hier die Bildbeschreibung ein Geben Sie hier die Bildbeschreibung ein

Mohit Dharmadhikari
quelle
3

Dies ist wirklich die gleiche Lösung wie die von Faester und Bill Moon, aber so machen Sie es mit PowerShell:

Import-Module Servermanager
Add-WindowsFeature AS-HTTP-Activation

Natürlich hindert Sie auch nichts daran, DISMvon PowerShell aus anzurufen.

JamesQMurphy
quelle
Sehr schön. Danke für die Info.
Rod Hartzell
-1

Sie können diesen Code zu web.config in asp mvc hinzufügen

   <system.webServer>
    <staticContent>
      <remove fileExtension=".srt" />
      <mimeMap fileExtension=".srt" mimeType="text/srt" />
      <remove fileExtension=".vtt" />
      <mimeMap fileExtension=".vtt" mimeType="text/vtt" />
    </staticContent>
  </system.webServer>

Sie können die Dateierweiterung mit Ihrer Dateierweiterung ändern

Malik Masis
quelle
Hi @malik - Könnten Sie klarstellen, wie das Zuordnen von Dateierweiterungen dazu führen kann, dass SVC-Endpunkte funktionieren?
Faester
Wenn ich das richtig verstehe, können Sie die Erweiterung nach Ihren Wünschen ändern. Sie können von feedforall.com/mime-types.htm schauen, aber Sie würden etwas anderes sagen, sorry, ich kann es nicht verstehen.
Malik Masis