Konfigurieren von Diensten mit KonfigurationsdateienConfiguring Services Using Configuration Files

Konfigurieren eines Windows Communication Foundation (WCF)-Diensts mit einer Konfigurationsdatei bietet Ihnen die Flexibilität der Bereitstellung von Endpunkt und Dienst dienstverhaltensdaten Bereitstellung statt zur Entwurfszeit.Configuring a Windows Communication Foundation (WCF) service with a configuration file gives you the flexibility of providing endpoint and service behavior data at the point of deployment instead of at design time. Dieses Thema beschreibt die dafür verfügbaren grundlegenden Verfahren.This topic outlines the primary techniques available.

Ein WCF-Dienst ist konfigurierbar mit der .NET Framework.NET Framework Konfiguration Technologie.A WCF service is configurable using the .NET Framework.NET Framework configuration technology. Am häufigsten werden XML-Elemente in die Datei "Web.config" für eine Internetinformationsdienste (Internet Information Services, IIS)-Website hinzugefügt, die einen WCF-Dienst hostet.Most commonly, XML elements are added to the Web.config file for an Internet Information Services (IIS) site that hosts a WCF service. Mithilfe der Elemente können Sie Details ändern, zum Beispiel die Endpunktadressen (die eigentlichen für die Kommunikation mit dem Dienst verwendeten Adressen) für einzelne Computer.The elements allow you to change details such as the endpoint addresses (the actual addresses used to communicate with the service) on a machine-by-machine basis. WCF umfasst darüber hinaus mehrere vom System bereitgestellte Elemente, mit die Sie die grundlegendsten Funktionen eines Diensts auswählen können.In addition, WCF includes several system-provided elements that allow you to quickly select the most basic features for a service. Beginnend mit .NET Framework Version 4.NET Framework version 4, WCF bietet eine neue Konfiguration Standardmodell, die die WCF--konfigurationsanforderungen vereinfacht.Starting with .NET Framework Version 4.NET Framework version 4, WCF comes with a new default configuration model that simplifies WCF configuration requirements. Wenn Sie keine WCF-Konfiguration für einen bestimmten Dienst bereitstellen, konfiguriert die Common Language Runtime den Dienst automatisch mit Standardendpunkten und standardmäßige Bindung/benutzerdefiniertem Verhalten.If you do not provide any WCF configuration for a particular service, the runtime automatically configures your service with some standard endpoints and default binding/behavior. In der Praxis ist das Schreiben einer Konfiguration einen großen Teil der Programmierung von WCF-Anwendungen.In practice, writing configuration is a major part of programming WCF applications.

Weitere Informationen finden Sie unter Konfigurieren von Bindungen für Dienste.For more information, see Configuring Bindings for Services. Eine Liste von der äußersten häufig Elemente verwendet, finden Sie unter sicherheitsbindungsarten Bindungen.For a list of of the most commonly used elements, see System-Provided Bindings. Weitere Informationen zu Standardendpunkten, Bindungen und Verhaltensweisen finden Sie unter vereinfachte Konfiguration und vereinfachte Konfiguration für WCF-Dienste.For more information about default endpoints, bindings, and behaviors, see Simplified Configuration and Simplified Configuration for WCF Services.

Wichtig

Beim Bereitstellen paralleler Szenarien, in denen zwei verschiedene Versionen eines Diensts bereitgestellt werden, müssen bei Verweisen in Konfigurationsdateien partielle Assemblynamen angegeben werden.When deploying side by side scenarios where two different versions of a service are deployed, it is necessary to specify partial names of assemblies referenced in configuration files. Dies liegt daran, dass die Konfigurationsdatei gemeinsam von allen Versionen eines Diensts verwendet wird und dass diese Dienste ggf. unter unterschiedlichen Versionen von .NET Framework ausgeführt werden.This is because the configuration file is shared across all versions of a service and they could be running under different versions of the .NET Framework.

System.Configuration: Web.config und App.configSystem.Configuration: Web.config and App.config

WCF verwendet das Konfigurationssystem System.Configuration der .NET Framework.NET Framework.WCF uses the System.Configuration configuration system of the .NET Framework.NET Framework.

Konfiguration eines Diensts in Visual Studio, verwenden Sie eine Datei "Web.config" oder eine Datei "App.config", um die Einstellungen anzugeben.When configuring a service in Visual Studio, use either a Web.config file or an App.config file to specify the settings. Die Wahl der Konfigurationsdatei wird durch die Hostumgebung des Diensts bestimmt.The choice of the configuration file name is determined by the hosting environment you choose for the service. Wenn Sie den Dienst in IIS hosten, verwenden Sie eine Web.config-Datei.If you are using IIS to host your service, use a Web.config file. Bei einer anderen Hostumgebung verwenden Sie eine App.config-Datei.If you are using any other hosting environment, use an App.config file.

In Visual Studio wird die Datei "App.config" zum Erstellen der Datei für die endgültige Konfiguration verwendet.In Visual Studio, the file named App.config is used to create the final configuration file. Der tatsächlich für die Konfigurationsdatei verwendete Name hängt vom Assemblynamen ab.The final name actually used for the configuration depends on the assembly name. Einer Assembly mit dem Namen "Cohowinery.exe" ist beispielsweise die Konfigurationsdatei namens "Cohowinery.exe.config" zugeordnet.For example, an assembly named "Cohowinery.exe" has a final configuration file name of "Cohowinery.exe.config". Sie müssen jedoch nur die Datei App.config ändern.However, you only need to modify the App.config file. An dieser Datei vorgenommene Änderungen werden bei der Kompilierung automatisch an die tatsächliche Anwendungskonfigurationsdatei weitergegeben.Changes made to that file are automatically made to the final application configuration file at compile time.

Bei Verwendung einer App.config-Datei führt das Konfigurationssystem den Inhalt dieser Datei mit dem Inhalt der Datei Machine.config zusammen, sobald die Anwendung gestartet und die Konfiguration übernommen wird.In using an App.config, file the configuration system merges the App.config file with content of the Machine.config file when the application starts and the configuration is applied. Dieser Mechanismus ermöglicht es, computerweite Einstellungen in der Datei Machine.config zu definieren.This mechanism allows machine-wide settings to be defined in the Machine.config file. Die Datei App.config kann verwendet werden, um Einstellungen in der Datei Machine.config zu überschreiben. Sie können Einstellungen in der Datei Machine.config aber auch sperren, sodass diese verwendet werden.The App.config file can be used to override the settings of the Machine.config file; you can also lock in the settings in Machine.config file so that they get used. Im Fall der Datei Web.config führt das Konfigurationssystem den Inhalt aller Web.config-Dateien in allen Verzeichnissen zur schließlich verwendeten Konfiguration im Anwendungsverzeichnis zusammen.In the Web.config case, the configuration system merges the Web.config files in all directories leading up to the application directory into the configuration that gets applied. Weitere Informationen zu Konfiguration und die Einstellung der Priorität, finden Sie in Themen in der System.Configuration Namespace.For more information about configuration and the setting priorities, see topics in the System.Configuration namespace.

Hauptabschnitte der KonfigurationsdateiMajor Sections of the Configuration File

Die Hauptabschnitte der Konfigurationsdatei umfassen folgende Elemente:The main sections in the configuration file include the following elements.

<system.ServiceModel>  

   <services>  
   <!—- Define the service endpoints. This section is optional in the new  
    default configuration model in .NET Framework 4. -->  
      <service>  
         <endpoint/>  
      </service>  
   </services>  

   <bindings>  
   <!-- Specify one or more of the system-provided binding elements,  
    for example, <basicHttpBinding> -->   
   <!-- Alternatively, <customBinding> elements. -->  
      <binding>  
      <!-- For example, a <BasicHttpBinding> element. -->  
      </binding>  
   </bindings>  

   <behaviors>  
   <!-- One or more of the system-provided or custom behavior elements. -->  
      <behavior>  
      <!-- For example, a <throttling> element. -->  
      </behavior>  
   </behaviors>  

</system.ServiceModel>  

Hinweis

Die Bindungs- und Verhaltensabschnitte sind optional und nur bei Bedarf enthalten.The bindings and behaviors sections are optional and are only included if required.

Die <Services >-ElementThe <services> Element

Das services -Element enthält die Spezifikationen aller Dienste, die die Anwendung hostet.The services element contains the specifications for all services the application hosts. Wenn das vereinfachte Konfigurationsmodell in .NET Framework 4.NET Framework 4verwendet wird, ist dieser Abschnitt optional.Starting with the simplified configuration model in .NET Framework 4.NET Framework 4, this section is optional.

<services><services>

Die <Service >-ElementThe <service> Element

Jeder Dienst verfügt über diese Attribute:Each service has these attributes:

  • name.name. Gibt den Typ an, der eine Implementierung eines Dienstvertrags bereitstellt.Specifies the type that provides an implementation of a service contract. Dies ist ein vollqualifizierter Name, der aus dem Namespace und einem Punkt gefolgt von dem Typnamen besteht.This is a fully qualified name which consists of the namespace, a period, and then the type name. Beispiel: "MyNameSpace.myServiceType".For example "MyNameSpace.myServiceType".

  • behaviorConfiguration.behaviorConfiguration. Gibt den Namen eines behavior -Elements an, das im behaviors -Element gefunden wurde.Specifies the name of one of the behavior elements found in the behaviors element. Das angegebene Verhalten steuert Aktionen, beispielsweise ob der Dienst Identitätswechsel erlaubt.The specified behavior governs actions such as whether the service allows impersonation. Wenn der Wert ein leerer Name oder kein behaviorConfiguration ist, wird dem Dienst der Standardsatz von Dienstverhalten hinzugefügt.If its value is the empty name or no behaviorConfiguration is provided then the default set of service behaviors is added to the service.

  • <service><service>

Die <Endpoint >-ElementThe <endpoint> Element

Jeder Endpunkt benötigt eine Adresse, eine Bindung und einen Vertrag. Diese Elemente werden durch die folgenden Attribute dargestellt:Each endpoint requires an address, a binding, and a contract, which are represented by the following attributes:

  • address.address. Gibt den Uniform Resource Identifier (URI) des Diensts an. Er kann als absolute Adresse oder als eine zur Basisadresse des Diensts relative Adresse angegeben werden.Specifies the service's Uniform Resource Identifier (URI), which can be an absolute address or one that is given relative to the base address of the service. Eine leere Zeichenfolge zeigt an, dass der Endpunkt unter der Basisadresse verfügbar ist. Diese Basisadresse wird bei der Erstellung des ServiceHost für den Dienst angegeben.If set to an empty string, it indicates that the endpoint is available at the base address that is specified when creating the ServiceHost for the service.

  • binding.binding. Gibt üblicherweise eine vom System bereitgestellte Bindung, beispielsweise WSHttpBindingan, kann aber auch eine benutzerdefinierte Bindung angeben.Typically specifies a system-provided binding like WSHttpBinding, but can also specify a user-defined binding. Die angegebene Bindung bestimmt, welcher Typ von Transport, Sicherheit und Codierung verwendet wird, und ob zuverlässige Sitzungen, Transaktionen oder Streaming unterstützt werden oder aktiviert sind.The binding specified determines the type of transport, security and encoding used, and whether reliable sessions, transactions, or streaming is supported or enabled.

  • bindingConfiguration.bindingConfiguration. Müssen die Standardwerte einer Bindung geändert werden, kann dies geschehen, indem das entsprechende binding -Element im bindings -Element konfiguriert wird.If the default values of a binding must be modified, this can be done by configuring the appropriate binding element in the bindings element. Diesem Attribut sollte derselbe Wert zugewiesen werden, wie dem name -Attribut des binding -Elements, das verwendet wird, um die Standardwerte zu ändern.This attribute should be given the same value as the name attribute of the binding element that is used to change the defaults. Wenn kein Name angegeben wird oder kein bindingConfiguration in der Bindung festgelegt ist, wird die Standardbindung des Bindungstyp im Endpunkt verwendet.If no name is given, or no bindingConfiguration is specified in the binding, then the default binding of the binding type is used in the endpoint.

  • contract.contract. Gibt die Schnittstelle an, die den Vertrag definiert.Specifies the interface that defines the contract. Das ist die Schnittstelle, die im CLR-Typ (Common Language Runtime) implementiert ist, der vom name -Attribut des service -Elements angegeben wird.This is the interface implemented in the common language runtime (CLR) type specified by the name attribute of the service element.

  • <Endpunkt >-Elementverweis<endpoint> element reference

Die <Bindings >-ElementThe <bindings> Element

Das bindings -Element enthält die Spezifikationen für alle Bindungen, die von jedem in einem Dienst definierten Endpunkt verwendet werden können.The bindings element contains the specifications for all bindings that can be used by any endpoint defined in any service.

<bindings><bindings>

Die <Bindung >-ElementThe <binding> Element

Das binding -Elemente, die im bindings -Element enthalten sind, können entweder eine der systemeigenen Bindungen (siehe System-Provided Bindings) oder eine benutzerdefinierte Bindung (siehe Custom Bindings) sein.The binding elements contained in the bindings element can be either one of the system-provided bindings (see System-Provided Bindings) or a custom binding (see Custom Bindings). Das binding -Element verfügt über ein name -Attribut, das eine Beziehung zwischen der Bindung und dem Endpunkt herstellt, der im bindingConfiguration -Attribut des endpoint -Elements angegeben ist.The binding element has a name attribute that correlates the binding with the endpoint specified in the bindingConfiguration attribute of the endpoint element. Wenn kein Name angegeben wird, entspricht die Bindung der Standardbindung für diesen Bindungstyp.If no name is specified then that binding corresponds to the default of that binding type.

Weitere Informationen zum Konfigurieren von Diensten und Clients finden Sie unter Konfigurieren von Windows Communication Foundation-Anwendungen.For more information about configuring services and clients, see Configuring Windows Communication Foundation Applications.

<binding><binding>

Die <Behaviors >-ElementThe <behaviors> Element

Dies ist ein Containerelement für die behavior -Elemente, die das Verhalten eines Diensts definieren.This is a container element for the behavior elements that define the behaviors for a service.

<behaviors><behaviors>

Die <Verhalten >-ElementThe <behavior> Element

Jedes behavior-Element wird durch ein name-Attribut identifiziert und stellt entweder ein vom System definiertes Verhalten, beispielsweise <throttling>, oder ein benutzerdefiniertes Verhalten bereit.Each behavior element is identified by a name attribute and provides either a system-provided behavior, such as <throttling>, or a custom behavior. Wenn kein Name angegeben wird, entspricht dieses Verhaltenselement dem standardmäßigen Dienst- oder Endpunktverhalten.If no name is given then that behavior element corresponds to the default service or endpoint behavior.

<behavior><behavior>

Gewusst wie: Verwenden von Bindungs- und VerhaltenskonfigurationenHow to Use Binding and Behavior Configurations

WCF erleichtert das gleiche zwischen Endpunkten, die mithilfe eines Verweissystems in der Konfiguration.WCF makes it easy to share configurations between endpoints using a reference system in configuration. Statt einem Endpunkt direkt Konfigurationswerte zuzuweisen, werden bindungsrelevante Konfigurationswerte in bindingConfiguration -Elementen des <binding> -Abschnitts gruppiert.Rather than directly assigning configuration values to an endpoint, binding-related configuration values are grouped in bindingConfiguration elements in the <binding> section. Eine Bindungskonfiguration ist eine benannte Gruppe von Einstellungen einer Bindung.A binding configuration is a named group of settings on a binding. Endpunkte können dann mithilfe des Namens auf eine bindingConfiguration verweisen.Endpoints can then reference the bindingConfiguration by name.

<?xml version="1.0" encoding="utf-8"?>  
<configuration>  
 <system.serviceModel>  
  <bindings>  
    <basicHttpBinding>  
     <binding name="myBindingConfiguration1" closeTimeout="00:01:00" />  
     <binding name="myBindingConfiguration2" closeTimeout="00:02:00" />  
     <binding closeTimeout="00:03:00" />  <!—- Default binding for basicHttpBinding -->  
    </basicHttpBinding>  
     </bindings>  
     <services>  
      <service name="MyNamespace.myServiceType">  
       <endpoint   
          address="myAddress" binding="basicHttpBinding"   
          bindingConfiguration="myBindingConfiguration1"  
          contract="MyContract"  />  
       <endpoint   
          address="myAddress2" binding="basicHttpBinding"   
          bindingConfiguration="myBindingConfiguration2"  
          contract="MyContract" />  
       <endpoint   
          address="myAddress3" binding="basicHttpBinding"   
          contract="MyContract" />  
       </service>  
      </services>  
    </system.serviceModel>  
</configuration>  

Das name -Attribut der bindingConfiguration wird im <binding> -Element festgelegt.The name of the bindingConfiguration is set in the <binding> element. Die name muss eine eindeutige Zeichenfolge im Bereich des Bindungstyps sein – in diesem Fall die < BasicHttpBinding>, oder ein leerer Wert, um auf die standardbindung zu verweisen.The name must be a unique string within the scope of the binding type—in this case the <basicHttpBinding>, or an empty value to refer to the default binding. Der Endpunkt wird mit der Konfiguration verknüpft, indem das bindingConfiguration -Attribut auf diese Zeichenfolge festgelegt wird.The endpoint links to the configuration by setting the bindingConfiguration attribute to this string.

Eine behaviorConfiguration wird genauso implementiert, wie das folgende Beispiel zeigt.A behaviorConfiguration is implemented the same way, as illustrated in the following sample.

<?xml version="1.0" encoding="utf-8"?>  
<configuration>  
  <system.serviceModel>  
    <behaviors>  
      <endpointBehaviors>  
        <behavior name="myBehavior">  
           <callbackDebug includeExceptionDetailInFaults="true" />  
         </behavior>  
      </endpointBehaviors>  
      <serviceBehaviors>  
        <behavior>  
          <serviceMetadata httpGetEnabled="true" />  
        </behavior>  
      </serviceBehaviors>  

    </behaviors>  
    <services>  
     <service name="NewServiceType">  
       <endpoint   
          address="myAddress3" behaviorConfiguration="myBehavior"  
          binding="basicHttpBinding"  
          contract="MyContract" />  
      </service>  
    </services>  
   </system.serviceModel>  
</configuration>  

Beachten Sie, dass dem Dienst der Standardsatz von Dienstverhalten hinzugefügt wird.Note that the default set of service behaviors are added to the service. Dieses System ermöglicht es Endpunkten, allgemeine Konfigurationen gemeinsam zu verwenden, ohne dass die Einstellungen neu definiert werden müssen.This system allows endpoints to share common configurations without redefining the settings. Wenn ein computerweiter Bereich erforderlich ist, erstellen Sie die Bindungs- oder Verhaltenskonfiguration in Machine.config. Die Konfigurationseinstellungen sind in allen App.config-Dateien verfügbar.If machine-wide scope is required, create the binding or behavior configuration in Machine.config. The configuration settings are available in all App.config files. Das Configuration Editor Tool (SvcConfigEditor.exe) macht es leicht, Konfigurationen zu erstellen.The Configuration Editor Tool (SvcConfigEditor.exe) makes it easy to create configurations.

VerhaltenszusammenführungBehavior Merge

Die Funktion der Verhaltenszusammenführung erleichtert die Verwaltung von Verhalten, wenn eine Reihe allgemeiner Verhalten einheitlich verwendet werden soll.The behavior merge feature makes it easier to manage behaviors when you want a set of common behaviors to be used consistently. Mithilfe dieser Funktion können Sie Verhalten auf verschiedenen Ebenen der Konfigurationshierarchie angeben und festlegen, dass Dienste Verhalten von verschiedenen Ebenen der Konfigurationshierarchie erben sollen.This feature allows you to specify behaviors at different levels of the configuration hierarchy and have services inherit behaviors from multiple levels of the configuration hierarchy. Dies soll im Folgenden veranschaulicht werden. Angenommen, in IIS ist das folgende Layout virtueller Verzeichnisse gegeben:To illustrate how this works assume you have the following virtual directory layout in IIS:

~\Web.config~\Service.svc~\Child\Web.config~\Child\Service.svc~\Web.config~\Service.svc~\Child\Web.config~\Child\Service.svc

Die Datei ~\Web.config hat folgenden Inhalt:And your ~\Web.config file has the following contents:

<configuration>  
  <system.serviceModel>  
    <behaviors>  
      <serviceBehaviors>  
        <behavior>  
          <serviceDebug includeExceptionDetailInFaults="True" />  
        </behavior>  
      </serviceBehaviors>  
    </behaviors>  
  </system.serviceModel>  
</configuration>  

Außerdem ist eine untergeordnete Datei Web.config mit folgendem Inhalt unter ~\Child\Web.config vorhanden:And you have a child Web.config located at ~\Child\Web.config with the following contents:

<configuration>  
  <system.serviceModel>  
    <behaviors>  
      <serviceBehaviors>  
        <behavior>  
          <serviceMetadata httpGetEnabled="True" />  
        </behavior>  
      </serviceBehaviors>  
    </behaviors>  
  </system.serviceModel>  
</configuration>  

Der Dienst unter ~\Child\Service.svc wird sowohl das serviceDebug-Verhalten als auch das serviceMetadata-Verhalten berücksichtigen.The service located at ~\Child\Service.svc will behave as though it has both the serviceDebug and serviceMetadata behaviors. Der Dienst unter ~\Service.svc berücksichtigt lediglich das serviceDebug-Verhalten.The service located at ~\Service.svc will only have the serviceDebug behavior. Die beiden Verhaltensauflistungen mit demselben Namen (in diesem Fall einer leeren Zeichenfolge) werden zusammengeführt.What happens is that the two behavior collections with the same name (in this case the empty string) are merged.

Sie können verhaltensauflistungen auch löschen, indem die <deaktivieren >-Tag oder einzelne Verhaltensweisen aus der Auflistung mithilfe der <entfernen > Tag.You can also clear behavior collections by using the <clear> tag and removed individual behaviors from the collection by using the <remove> tag. Die folgenden beiden Konfigurationen führen beispielsweise dazu, dass der untergeordnete Dienst lediglich das serviceMetadata-Verhalten verwendet:For example, the following two configuration results in the child service having only the serviceMetadata behavior:

<configuration>  
  <system.serviceModel>  
    <behaviors>  
      <serviceBehaviors>  
        <behavior>  
          <remove name="serviceDebug"/>  
          <serviceMetadata httpGetEnabled="True" />  
        </behavior>  
      </serviceBehaviors>  
    </behaviors>  
  </system.serviceModel>  
</configuration>  
<configuration>  
  <system.serviceModel>  
    <behaviors>  
      <serviceBehaviors>  
        <behavior>  
          <clear/>  
          <serviceMetadata httpGetEnabled="True" />  
        </behavior>  
      </serviceBehaviors>  
    </behaviors>  
  </system.serviceModel>  
</configuration>  

Die Verhaltenszusammenführung erfolgt für unbenannte Verhaltensauflistungen (wie oben veranschaulicht) sowie für benannte Verhaltensauflistungen.Behavior merge is done for nameless behavior collections as shown above and named behavior collections as well.

Die Verhaltenszusammenführung wird in der IIS-Hostingumgebung unterstützt, in der Web.config-Dateien hierarchisch mit den Stammdateien Web.config und machine.config zusammengeführt werden. Sie funktioniert jedoch auch in der Anwendungsumgebung, in der machine.config mit der Datei App.config zusammengeführt werden kann.Behavior merge works in the IIS hosting environment, in which Web.config files merge hierarchically with the root Web.config file and machine.config. But it also works in the application environment, where machine.config can merge with the App.config file.

Die Verhaltenszusammenführung wird sowohl auf Endpunktverhalten als auch auf Dienstverhalten in der Konfiguration angewendet.Behavior merge applies to both endpoint behaviors and service behaviors in configuration.

Wenn eine untergeordnete Verhaltensauflistung ein Verhalten enthält, das bereits in der übergeordneten Verhaltensauflistung enthalten ist, wird das übergeordnete Verhalten vom untergeordneten überschrieben.If a child behavior collection contains a behavior that’s already present in the parent behavior collection, the child behavior overrides the parent. Wenn eine übergeordnete verhaltensauflistung <serviceMetadata httpGetEnabled="False" /> und eine untergeordnete verhaltensauflistung <serviceMetadata httpGetEnabled="True" />, überschreibt das untergeordnete Verhalten das übergeordnete Verhalten in der verhaltensauflistung, und HttpGetEnabled wird auf "true".So if a parent behavior collection had <serviceMetadata httpGetEnabled="False" /> and a child behavior collection had <serviceMetadata httpGetEnabled="True" />, the child behavior would override the parent behavior in the behavior collection and httpGetEnabled would be "true".

Siehe auchSee Also

Vereinfachte KonfigurationSimplified Configuration
Konfigurieren von Windows Communication Foundation-AnwendungenConfiguring Windows Communication Foundation Applications
<service><service>
<binding><binding>