Fehler beim Hosten .NET Framework 3.5 WCF-Diensts auf Windows Server 2012 oder Windows 8

Dieser Artikel hilft Ihnen, den Fehler zu beheben, der auftritt, wenn Sie einen .NET Framework 3.5-Windows Communication Foundation (WCF)-Dienst hosten, der die Nicht-HTTP-Aktivierung in Windows Server 2012 oder Windows 8 verwendet.

Ursprüngliche Produktversion:   Microsoft .NET Framework Windows Communication Foundation, Windows Server 2012, Windows 8
Ursprüngliche KB-Nummer:   2803161

Problembeschreibung

Stellen Sie sich folgendes Szenario vor:

  • Der wcf-Dienst .NET Framework 3.5 wird auf einem der folgenden Computer gehostet:
    • Ein Computer, auf dem eine Neuinstallation von Windows Server 2012 oder Windows 8 ausgeführt wird.
    • Ein Computer, auf dem eine Version von Windows Server 2012 ausgeführt wird, die von Windows Server 2008 R2 aktualisiert wurde, oder eine Version von Windows 8, die von Windows 7 aktualisiert wurde. Die WCF-Nicht-HTTP-Aktivierungsfunktion (z. B. NET. TCP) auf diesem Computer wurde nicht aktiviert, bevor der Computer auf Windows Server 2012 oder Windows 8 aktualisiert wurde.
  • Der WCF-Dienst, der auf Windows Server 2012 oder Windows 8 gehostet wird, wird aufgerufen.

In diesem Szenario wird die folgende Fehlermeldung angezeigt:

Ausnahme: System.InvalidOperationException: Für das Protokoll "net.tcp" ist keine Implementierung des HostedTransportConfiguration-Typs registriert.
at System.ServiceModel.AsyncResult.End[TAsyncResult](IAsyncResult result)
at System.ServiceModel.Activation.HostedHttpRequestAsyncResult.End(IAsyncResult result)

Hinweis

Dieses Problem tritt nicht auf, wenn der WCF-Dienst .NET Framework 3.5 in einer IiS-Version gehostet wird, die die Nicht-HTTP-Aktivierung auf einem Computer verwendet, auf dem Windows Server 2008 R2 oder Windows 7 ausgeführt wird.

Problemumgehung

Verwenden Sie eine der folgenden Methoden, um das Problem zu umgehen.

Methode 1

Manuelles Ändern des Stamms derWeb.config-Datei. Gehen Sie hierzu wie folgt vor.

Warnung

Wenn Sie die Web.config-Datei falsch ändern, funktionieren ASP.NET Anwendungen möglicherweise nicht mehr. Es wird empfohlen, die Web.config Datei zu sichern, bevor Sie sie ändern.

  1. Öffnen Sie die folgende Datei in einem Text-Editor, z. B. Editor, als Administrator:

    %windir%\Microsoft.NET\Framework\v2.0.50727\CONFIG\web.config

  2. Fügen Sie den folgenden Konfigurationsabschnitt vor dem </configuration> Tag hinzu.

    Hinweis

    Das </configuration> Tag befindet sich am Ende der Datei.

    <system.serviceModel>
       <serviceHostingEnvironment>
          <add name="net.tcp" transportConfigurationType="System.ServiceModel.Activation.TcpHostedTransportConfiguration, System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
          <add name="net.pipe" transportConfigurationType="System.ServiceModel.Activation.NamedPipeHostedTransportConfiguration, System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
          <add name="net.msmq" transportConfigurationType="System.ServiceModel.Activation.MsmqHostedTransportConfiguration, System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
          <add name="msmq.formatname" transportConfigurationType="System.ServiceModel.Activation.MsmqIntegrationHostedTransportConfiguration, System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
       </serviceHostingEnvironment>
    </system.serviceModel>
    
  3. Fügen Sie der Datei die folgenden Konfigurationsabschnitte hinzu, sofern sie noch nicht vorhanden sind:

    <protocols>
       <add name="net.tcp" processHandlerType="System.ServiceModel.WasHosting.TcpProcessProtocolHandler, System.ServiceModel.WasHosting, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
          appDomainHandlerType="System.ServiceModel.WasHosting.TcpAppDomainProtocolHandler, System.ServiceModel.WasHosting, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
          validate="false" />
       <add name="net.pipe" processHandlerType="System.ServiceModel.WasHosting.NamedPipeProcessProtocolHandler, System.ServiceModel.WasHosting, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
          appDomainHandlerType="System.ServiceModel.WasHosting.NamedPipeAppDomainProtocolHandler, System.ServiceModel.WasHosting, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
          validate="false" />
       <add name="net.msmq" processHandlerType="System.ServiceModel.WasHosting.MsmqProcessProtocolHandler, System.ServiceModel.WasHosting, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
          appDomainHandlerType="System.ServiceModel.WasHosting.MsmqAppDomainProtocolHandler, System.ServiceModel.WasHosting, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
          validate="false" />
       <add name="msmq.formatname" processHandlerType="System.ServiceModel.WasHosting.MsmqIntegrationProcessProtocolHandler, System.ServiceModel.WasHosting, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
          appDomainHandlerType="System.ServiceModel.WasHosting.MsmqIntegrationAppDomainProtocolHandler, System.ServiceModel.WasHosting, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
          validate="false" />
    </protocols>
    
  4. Speichern Sie die Datei.

Führen Sie nach dem Speichern der Datei die gleichen Schritte aus, um die folgende Datei zu ändern, und starten Sie dann den Computer neu.

%windir%\Microsoft.NET\Framework64\v2.0.50727\CONFIG\web.config

Hinweis

Es wird empfohlen, diese Methode anzuwenden, um das Problem zu umgehen, da diese Methode die minimale Auswirkung auf den Computer hat. Diese Änderungen gelten nur für die Web.config-Datei und wirken sich nicht auf andere ASP.NET Anwendungen aus.

Methode 2

Führen Sie SmconfigInstaller.exe aus, um die Web.config Datei zu aktualisieren.

Warnung

Diese Methode aktualisiert möglicherweise mehr Konfigurationen in der Web.config- und IIS-Anwendung Host.config Dateien, als zur Behebung des Problems erforderlich sind. Die aktualisierten Konfigurationen hängen davon ab, wie viele anwendungen ASP.NET 2.0, ASP.NET 3.0 und ASP.NET 3.5 auf dem Computer gehostet und konfiguriert werden. Wenn Sie diese Methode verwenden, müssen Sie vorsichtig sein, wenn Sie andere ASP.NET Anwendungen verwenden, die nicht geändert werden sollten.

  • Führen Sie die folgenden Schritte aus, um SMConfigInstaller.exe auf einem Computer mit einem 32-Bit-Betriebssystem auszuführen:

    1. Geben Sie an einer Eingabeaufforderung den folgenden Befehl ein, und drücken Sie die EINGABETASTE:

      %windir%\Microsoft.NET\Framework\v3.0\Windows Communication Foundation\SMConfigInstaller.exe -c:install -f:tcp -f:pipe -f:msmq -f:http

    2. Starten Sie den Computer neu.

  • Führen Sie die folgenden Schritte aus, um SMConfigInstaller.exe auf einem Computer mit einem 64-Bit-Betriebssystem auszuführen:

    1. Geben Sie an einer 64-Bit-Eingabeaufforderung den folgenden Befehl ein, und drücken Sie dann die EINGABETASTE:

      %windir%\Microsoft.NET\Framework64\v3.0\Windows Communication Foundation\SMConfigInstaller.exe -c:install -f:tcp -f:pipe -f:msmq -f:http

    2. Geben Sie an einer 32-Bit-Eingabeaufforderung den folgenden Befehl ein, und drücken Sie dann die EINGABETASTE:

      %windir%\Microsoft.NET\Framework\v3.0\Windows Communication Foundation\SMConfigInstaller.exe -c:install -f:tcp -f:pipe -f:msmq -f:http

    3. Starten Sie den Computer neu.