Bereitstellen eines IIS-gehosteten WCF-DienstsDeploying an Internet Information Services-Hosted WCF Service

Entwickeln und Bereitstellen eines Windows Communication Foundation (WCF)-Diensts, das in Internet Information Services (IIS) gehostet wird umfasst die folgenden Aufgaben:Developing and deploying a Windows Communication Foundation (WCF) service that is hosted in Internet Information Services (IIS) consists of the following tasks:

  • Stellen Sie sicher, dass IIS, ASP.NET, WCF und WCF-Aktivierung-Komponente ordnungsgemäß installiert und registriert sind.Ensure that IIS, ASP.NET, WCF, and the WCF activation component are correctly installed and registered.

  • Erstellen einer neuen IIS-Anwendung oder Wiederverwenden einer vorhandenen ASP.NETASP.NET -Anwendung.Create a new IIS application, or reuse an existing ASP.NETASP.NET application.

  • Erstellen Sie eine SVC-Datei für den WCF-Dienst.Create a .svc file for the WCF service.

  • Bereitstellen der Dienstimplementierung für die IIS-Anwendung.Deploy the service implementation to the IIS application.

  • Konfigurieren Sie den WCF-Dienst.Configure the WCF service.

Eine ausführliche exemplarische Vorgehensweise zum Erstellen eines IIS-gehosteten WCF-Diensts finden Sie unter Gewusst wie: Hosten eines WCF-Diensts in IIS.For a detailed walkthrough of creating an IIS-hosted WCF service, see How to: Host a WCF Service in IIS.

Sicherstellen, dass IIS, ASP.NET und WCF ordnungsgemäß installiert und registriert sindEnsure That IIS, ASP.NET and WCF Are Correctly Installed and Registered

WCF, IIS und ASP.NET müssen für IIS-gehosteten WCF-Dienste ordnungsgemäß installiert werden.WCF, IIS, and ASP.NET must be installed for IIS-hosted WCF services to function correctly. Das Verfahren zum Installieren von WCF (als Teil der WinFXWinFX), ASP.NET und IIS variiert je nach der Version des Betriebssystems verwendet wird.The procedures for installing WCF (as part of the WinFXWinFX), ASP.NET and IIS vary depending on the operating system version being used. Weitere Informationen zum Installieren von WCF und die WinFXWinFX, finden Sie unter Microsoft .NET Framework 4-Webinstaller.For more information about installing WCF and the WinFXWinFX, see Microsoft .NET Framework 4 Web Installer. Anweisungen zum Installieren von IIS finden Sie unter Installieren von IIS.Instructions for installing IIS can be found at Installing IIS.

Der Installationsvorgang für den WinFXWinFX WCF automatisch bei IIS registriert, wenn IIS bereits auf dem Computer vorhanden ist.The installation process for the WinFXWinFX automatically registers WCF with IIS if IIS is already present on the machine. Wenn IIS installiert ist, nach der WinFXWinFX, ein zusätzlicher Schritt ist erforderlich, um WCF bei IIS registrieren und ASP.NETASP.NET.If IIS is installed after the WinFXWinFX, an additional step is required to register WCF with IIS and ASP.NETASP.NET. Gehen Sie hierzu je nach Betriebssystem wie folgt vor:You can do this as follows, depending on your operating system:

  • Windows XP SP2Windows XP SP2, Windows 7 und Windows Server 2003Windows Server 2003: Verwenden der ServiceModel Registration-Tool (ServiceModelReg.exe) Tool WCF mit IIS zu registrieren: um dieses Tool verwenden zu können, geben ServiceModelReg.exe/i/x in Visual Studio eine Eingabeaufforderung., Windows 7, and Windows Server 2003Windows Server 2003: Use the ServiceModel Registration Tool (ServiceModelReg.exe) tool to register WCF with IIS: To use this tool, type ServiceModelReg.exe /i /x in the Visual Studio command prompt. Sie können diese Eingabeaufforderung öffnen, indem Sie auf die Schaltfläche „Start“ klicken und dann Alle Programme, Microsoft Visual Studio 2012, Visual Studio Toolsund Visual Studio-Eingabeaufforderungauswählen.You can open this command prompt by clicking the start button, selecting All Programs, Microsoft Visual Studio 2012, Visual Studio Tools, and Visual Studio Command Prompt

  • Windows VistaWindows Vista: Installieren Sie die Unterkomponente „Windows Communication Foundation-Aktivierungskomponenten“ von WinFXWinFX.: Install the Windows Communication Foundation Activation Components subcomponent of the WinFXWinFX. Klicken Sie hierzu in der Systemsteuerung auf Software und dann hinzufügen/Windows-Komponenten entfernen.To do this, in Control Panel, click Add or Remove Programs and then Add/Remove Windows Components. Dadurch wird der Assistent für Windows-Komponentenaktiviert.This activates the Windows Component Wizard.

  • Windows 7:Windows 7:

Abschließend müssen Sie sich sicherstellen, dass ASP.NET für die Verwendung von .NET Framework Version 4 konfiguriert ist.Finally you must verify that ASP.NET is configured to use the .NET Framework version 4. Führen Sie hierzu das Tool ASPNET_Regiis mit der Option –i aus.You do this by running the ASPNET_Regiis tool with the –i option. Weitere Informationen finden Sie unter ASP.NET IIS-RegistrierungstoolFor more information, see ASP.NET IIS Registration Tool

Erstellen einer neuen IIS-Anwendung oder Wiederverwenden einer vorhandenen ASP.NET-AnwendungCreate a New IIS Application or Reuse an Existing ASP.NET Application

IIS-gehostete WCF-Dienste müssen innerhalb einer iisanwendung befinden.IIS-hosted WCF services must reside inside of an IIS application. Sie können eine neue IIS‑Anwendung zum Hosten von WCF-Diensten ausschließlich erstellen.You can create a new IIS application to host WCF services exclusively. Alternativ können Sie einen WCF-Dienst bereitstellen, in eine vorhandene Anwendung, die bereits hostet ASP.NET 2.0ASP.NET 2.0 Inhalt (z. B. aspx-Seiten und ASP.NET-Webdienste [ASMX]).Alternatively, you can deploy an WCF service into an existing application that is already hosting ASP.NET 2.0ASP.NET 2.0 content (such as .aspx pages and ASP.NET Web services [ASMX]). Weitere Informationen zu diesen Optionen finden Sie unter die "Hosting WCF Seite-an-Seite mit ASP.NET" und "Hosting WCF-Dienste im ASP.NET-Kompatibilitätsmodus" im Berichtsbereiche WCF-Dienste und ASP.NET.For more information about these options, see the "Hosting WCF Side-by-Side with ASP.NET" and "Hosting WCF Services in ASP.NET Compatibility Mode" sections in WCF Services and ASP.NET.

Beachten Sie, dass IIS 6.0IIS 6.0 und höhere Versionen in regelmäßigen Abständen eine isolierte objektorientierte Programmierungsanwendung neu starten.Note that IIS 6.0IIS 6.0 and later versions periodically restart an isolated object-oriented programming application. Der Standardwert ist 1740 Minuten.The default value is 1740 minutes. Der höchstmögliche Wert sind 71.582 Minuten.The maximum value supported is 71,582 minutes. Dieser Neustart kann deaktiviert werden.This restart can be disabled. Weitere Informationen zu dieser Eigenschaft finden Sie unter der PeriodicRestartTime.For more information about this property, see the PeriodicRestartTime.

Erstellen einer SVC-Datei für den WCF-DienstCreate an .svc File for the WCF Service

In IIS gehostete WCF-Dienste werden als spezielle Inhaltsdateien (SVC-Dateien) in der IIS-Anwendung dargestellt.WCF services hosted in IIS are represented as special content files (.svc files) inside the IIS application. Dieses Modell ähnelt der Art und Weise, wie ASMX-Seiten in einer IIS-Anwendung als ASMX-Dateien dargestellt werden.This model is similar to the way ASMX pages are represented inside of an IIS application as .asmx files. Eine SVC-Datei enthält einen WCF-spezifische verarbeitungsanweisung (@ServiceHost), mit der die WCF-Hostinfrastruktur gehostete Dienste als Reaktion auf eingehende Nachrichten zu aktivieren.A .svc file contains a WCF-specific processing directive (@ServiceHost) that allows the WCF hosting infrastructure to activate hosted services in response to incoming messages. Die gebräuchlichste Syntax für eine SVC-Datei befindet sich in der folgenden Anweisung:The most common syntax for a .svc file is in the following statement.

<% @ServiceHost Service="MyNamespace.MyServiceImplementationTypeName" %>  

Sie besteht aus der @ServiceHost -Direktive und einem einzelnen Attribut: Service.It consists of the @ServiceHost directive and a single attribute, Service. Der Wert des Service -Attributs ist der CLR-Typname (Common Language Runtime) der Dienstimplementierung.The value of the Service attribute is the common language runtime (CLR) type name of the service implementation. Die Verwendung dieser Direktive ist praktisch mit der Erstellung eines Diensthosts mithilfe des folgenden Codes gleichzusetzen:Using this directive is basically equivalent to creating a service host using the following code.

new ServiceHost( typeof( MyNamespace.MyServiceImplementationTypeName ) );  

Zudem kann eine zusätzliche Hostkonfiguration vorgenommen werden, indem z. B. eine Liste mit Basisadressen für den Dienst erstellt wird.Additional hosting configuration, such as creating a list of base addresses for the service can also be done. Sie können auch eine benutzerdefinierte ServiceHostFactory verwenden, um die Direktive zur Verwendung mit benutzerdefinierten Hostlösungen zu erweitern.You can also use a custom ServiceHostFactory to extend the directive for use with custom hosting solutions. Die IIS-Anwendungen, die WCF-Dienste hosten sind nicht verantwortlich für die Verwaltung der Erstellung und Gültigkeitsdauer von ServiceHost Instanzen.The IIS applications that host WCF services are not responsible for managing the creation and lifetime of ServiceHost instances. Die verwaltete WCF-Hostinfrastruktur erstellt die notwendige ServiceHost -Instanz dynamisch, sobald die erste Anforderung für die SVC-Datei empfangen wird.The managed WCF hosting infrastructure creates the necessary ServiceHost instance dynamically when the first request is received for the .svc file. Die Instanz wird erst freigegeben, wenn sie entweder explizit durch Code geschlossen oder die Anwendung wiederverwendet wird.The instance is not released until either it is closed explicitly by code or when the application is recycled.

Weitere Informationen zur Syntax für SVC-Dateien finden Sie unter @ServiceHost .For more information about the syntax for .svc files, see @ServiceHost.

Bereitstellen der Dienstimplementierung für die IIS-AnwendungDeploy the Service Implementation to the IIS Application

In IIS gehostete WCF-Dienste verwenden das gleiche dynamische Kompilierungsmodell wie ASP.NET 2.0ASP.NET 2.0.WCF services hosted in IIS use the same dynamic compilation model as ASP.NET 2.0ASP.NET 2.0. Wie bei ASP.NETASP.NET, können Sie den Implementierungscode für IIS-gehosteten WCF-Dienste auf unterschiedliche Weise an verschiedenen Speicherorten folgendermaßen bereitstellen:Just as with ASP.NETASP.NET, you can deploy the implementation code for IIS-hosted WCF services in several ways at various locations, as follows:

  • Als vorkompilierte DLL im globalen Assemblycache (GAC) oder im \bin-Verzeichnis der Anwendung.As a precompiled .dll file located in the global assembly cache (GAC) or in the application’s \bin directory. Vorkompilierte Binärdateien werden erst aktualisiert, wenn eine neue Version der Klassenbibliothek bereitgestellt wird.Precompiled binaries are not updated until a new version of the class library is deployed.

  • Als nichtkompilierte Quelldateien im \App_Code-Verzeichnis der Anwendung.As un-compiled source files located in the application’s \App_Code directory. Quelldateien in diesem Verzeichnis werden dynamisch angefordert, wenn die erste Anforderung der Anwendung verarbeitet wird.Source files located in this directory are dynamically required when processing the application’s first request. Änderungen an Dateien im \App_Code-Verzeichnis führen dazu, dass die gesamte Anwendung wiederverwendet und neu kompiliert wird, wenn die nächste Anforderung empfangen wird.Any changes to files in the \App_Code directory cause the entire application to be recycled and recompiled when the next request is received.

  • Als nichtkompilierter Code, der direkt in die SVC-Datei eingefügt wird.As un-compiled code placed directly in the .svc file. Implementierungscode kann auch sich Inline in der SVC Datei, nach der @ServiceHost Richtlinie.Implementation code can also be located inline in the service’s .svc file, after the @ServiceHost directive. Änderungen an Inlinecode führen dazu, dass die Anwendung wiederverwendet und neu kompiliert wird, wenn die nächste Anforderung empfangen wird.Any changes to inline code cause the application to be recycled and recompiled when the next request is received.

Weitere Informationen zu den ASP.NET 2.0ASP.NET 2.0 -Kompilierungsmodell finden Sie unter Übersicht über die ASP.NET-Kompilierung.For more information about the ASP.NET 2.0ASP.NET 2.0 compilation model, see ASP.NET Compilation Overview.

Konfigurieren des WCF-DienstsConfigure the WCF Service

IIS-gehostete WCF-Dienste speichern ihre Konfiguration in der Datei "Web.config" der Anwendung.IIS-hosted WCF services store their configuration in the applications Web.config file. IIS-gehostete Dienste verwenden die gleichen Konfigurationselemente und die Syntax als WCF-Dienste, die außerhalb von IIS gehostet.IIS-hosted services use the same configuration elements and syntax as WCF services hosted outside of IIS. Jedoch gelten die folgenden Einschränkungen nur für die IIS-Hostumgebung:However, the following constraints are unique to the IIS hosting environment:

  • Basisadressen für IIS-gehostete DiensteBase addresses for IIS-hosted services.

  • Hosting außerhalb von IIS WCF-Dienste können die Basisadresse der Dienste, die sie hosten, indem Sie einen Satz Basisadressen übergeben steuern Anwendungen behandeln URIs der ServiceHost Konstruktor oder durch Eingabe einer <Host > Element in der Konfiguration des Diensts.Applications hosting WCF services outside of IIS can control the base address of the services they host by passing a set of base address URIs to the ServiceHost constructor or by providing a <host> element in the service’s configuration. Dienste, die in IIS gehostet werden, können ihre Basisadressen nicht steuern. Die Basisadresse eines IIS-gehosteten Diensts ist die Adresse seiner SVC-Datei.Services hosted in IIS do not have the ability to control their base address; the base address of an IIS-hosted service is the address of its .svc file.

Endpunktadressen für IIS-gehostete DiensteEndpoint Addresses for IIS-Hosted Services

Wenn ein Dienst in IIS gehostet wird, werden Endpunktadressen als relativ zur Adresse der SVC-Datei betrachtet, die den Dienst darstellt.When hosted in IIS, endpoint addresses are always considered to be relative to the address of the .svc file that represents the service. Wenn die Basisadresse eines WCF-Diensts ist z. B. http://localhost/Application1/MyService.svc mit Endpunktkonfiguration.For example, if the base address of a WCF service is http://localhost/Application1/MyService.svc with the following endpoint configuration.

<endpoint address="anotherEndpoint" .../>  

Dies bietet einen Endpunkt, der am erreicht werden kann "http://localhost/Application1/MyService.svc/anotherEndpoint".This provides an endpoint that can be reached at "http://localhost/Application1/MyService.svc/anotherEndpoint".

Auf ähnliche Weise die Endpunkt-Konfigurationselement, das eine leere Zeichenfolge verwendet wird, wie die relative Adresse erreichbar am Endpunkt stellt http://localhost/Application1/MyService.svc, dies ist die Basisadresse.Similarly, the endpoint configuration element that uses an empty string as the relative address provides an endpoint reachable at http://localhost/Application1/MyService.svc, which is the base address.

<endpoint address="" ... />  

Sie müssen immer relative Endpunktadressen für IIS-gehostete Dienstendpunkte verwenden.You must always use relative endpoint addresses for IIS-hosted service endpoints. Eine vollständig qualifizierten Endpunktadresse angeben (z. B. http://localhost/MyService.svc) kann zu Fehlern bei der Bereitstellung des Diensts führen, wenn die Endpunktadresse nicht auf die IIS-Anwendung verweist, der den Endpunkt verfügbar macht Dienst hostet.Supplying a fully-qualified endpoint address (for example, http://localhost/MyService.svc) can lead to errors in the deployment of the service if the endpoint address does not point to the IIS-application that hosts the service exposing the endpoint. Durch die Verwendung relativer Endpunktadressen für gehostete Dienste werden diese potenziellen Konflikte vermieden.Using relative endpoint addresses for hosted services avoids these potential conflicts.

Verfügbare TransporteAvailable Transports

In IIS 5.1 gehosteten WCF-Diensten und IIS 6.0IIS 6.0 auf die Verwendung von HTTP-basierten Kommunikation beschränkt sind.WCF services hosted in IIS 5.1 and IIS 6.0IIS 6.0 are restricted to using HTTP-based communication. Auf diesen IIS-Plattformen führt das Konfigurieren eines gehosteten Diensts für die Verwendung einer Nicht-HTTP-Bindung zu einem Fehler während der Dienstaktivierung.On these IIS platforms, configuring a hosted service to use a non-HTTP binding results in an error during service activation. Die von IIS 7.0IIS 7.0unterstützten Transporte umfassen HTTP, Net.TCP, Net.Pipe, Net.MSMQ und msmq.formatname für die Abwärtskompatibilität mit bestehenden MSMQ-Anwendungen.For IIS 7.0IIS 7.0, the supported transports include HTTP, Net.TCP, Net.Pipe, Net.MSMQ, and msmq.formatname for backwards compatibility with existing MSMQ applications.

HTTP-TransportsicherheitHTTP Transport Security

IIS-gehostete WCF-Dienste können Nutzen des HTTP-transportsicherheit (beispielsweise https- und HTTP-Authentifizierungsschemata wie Basic, Digest und integrierte Windows-Authentifizierung) als das virtuelle IIS-Verzeichnis mit dem Dienst die unterstützt Einstellungen.IIS-hosted WCF services can make use of HTTP transport security (for example, HTTPS and HTTP authentication schemes such as Basic, Digest, and Windows Integrated Authentication) as long as the IIS virtual directory that contains the service supports those settings. Die HTTP-Transportsicherheitseinstellungen der Bindung eines gehosteten Endpunkts müssen mit den Transportsicherheitseinstellungen im virtuellen IIS-Verzeichnis identisch sein, in dem sie enthalten ist.The HTTP Transport Security settings on a hosted endpoint’s binding must match the transport security settings on the IIS virtual directory that contains it.

Beispielsweise muss ein WCF-Endpunkt für die Verwendung von HTTP-Digestauthentifizierung konfiguriert in einem virtuellen IIS-Verzeichnis befinden, die auch so konfiguriert ist, dass die HTTP-Digestauthentifizierung zulässt.For example, a WCF endpoint configured to use HTTP digest authentication must reside in an IIS virtual directory that is also configured to allow HTTP digest authentication. Nicht übereinstimmende Kombinationen von IIS-Einstellungen und WCF-Endpunkt führen zu einem Fehler während der dienstaktivierung.Unmatched combinations of IIS settings and WCF endpoint settings result in an error during service activation.

Siehe auchSee Also

Hosten in IIS (Internetinformationsdienste)Hosting in Internet Information Services
Bewährte Methoden für das Hosten in IIS (Internetinformationsdienste)Internet Information Services Hosting Best Practices
Windows Server AppFabric-HostingfunktionenWindows Server App Fabric Hosting Features