Vereinfachte KonfigurationSimplified Configuration

Das Konfigurieren von Windows Communication Foundation (WCF)-Diensten kann eine komplexe Aufgabe sein.Configuring Windows Communication Foundation (WCF) services can be a complex task. Es gibt viele verschiedene Optionen, und es ist nicht immer einfach zu bestimmen, welche Einstellungen erforderlich sind.There are many different options and it is not always easy to determine what settings are required. Konfigurationsdateien erhöhen zwar die Flexibilität von WCF-Diensten, Sie sind jedoch auch die Quelle für viele schwer zu suchende Probleme.While configuration files increase the flexibility of WCF services, they also are the source for many hard to find problems. .NET Framework 4.6.1.NET Framework 4.6.1 behandelt diese Probleme und gibt Benutzern die Möglichkeit, den Umfang und die Komplexität der Dienstkonfiguration zu reduzieren.addresses these problems and provides a way to reduce the size and complexity of service configuration.

Vereinfachte KonfigurationSimplified Configuration

In den WCF-Dienst Konfigurationsdateiensystem.serviceModelenthält der Abschnitt < >serviceein < >-Element für jeden gehosteten Dienst.In WCF service configuration files, the <system.serviceModel> section contains a <service> element for each service hosted. Das <service>-Element enthält eine Auflistung <endpoint> Elemente, die die für jeden Dienst verfügbar gemachten Endpunkte und optional einen Satz von Dienst Verhaltensweisen angeben.The <service> element contains a collection of <endpoint> elements that specify the endpoints exposed for each service and optionally a set of service behaviors. Die <endpoint>-Elemente geben die Adresse, die Bindung und den Vertrag an, die vom Endpunkt verfügbar gemacht werden, und optional die Bindungs Konfiguration und das Endpunkt Verhalten.The <endpoint> elements specify the address, binding, and contract exposed by the endpoint, and optionally binding configuration and endpoint behaviors. Der Abschnittsystem.serviceModel< > enthält auch ein <behaviors> Element, mit dem Sie Dienst-oder Endpunkt Verhaltensweisen angeben können.The <system.serviceModel> section also contains a <behaviors> element that allows you to specify service or endpoint behaviors. Das folgende Beispiel zeigt den Abschnittsystem.serviceModel< > einer Konfigurationsdatei.The following example shows the <system.serviceModel> section of a configuration file.

<system.serviceModel>  
  <behaviors>  
    <serviceBehaviors>  
      <behavior name="MyServiceBehavior">  
        <serviceMetadata httpGetEnabled="true">  
        <serviceDebug includeExceptionDetailInFaults="false">  
      </behavior>  
    </serviceBehaviors>  
  </behaviors>  
  <bindings>  
   <basicHttpBinding>  
      <binding name=MyBindingConfig"  
               maxBufferSize="100"  
               maxReceiveBufferSize="100" />  
   </basicHttpBinding>  
   </bindings>   <services>  
    <service behaviorConfiguration="MyServiceBehavior"  
             name="MyService">  
      <endpoint address=""  
                binding="basicHttpBinding"  
                contract="ICalculator"  
                bindingConfiguration="MyBindingConfig" />  
      <endpoint address="mex"  
                binding="mexHttpBinding"  
                contract="IMetadataExchange"/>  
    </service>  
  </services>  
</system.serviceModel>  

.NET Framework 4.6.1.NET Framework 4.6.1vereinfacht das Konfigurieren eines WCF-Dienstanbieter, indem die Anforderungservicefür das < >-Element entfernt wird.makes configuring a WCF service easier by removing the requirement for the <service> element. Wenn Sie keine <service> Abschnitt hinzufügen oder Endpunkte in einem <service> Abschnitt hinzufügen und der Dienst keine Endpunkte Programm gesteuert definiert, wird dem Dienst automatisch ein Satz von Standard Endpunkten hinzugefügt. Dienst Basisadresse und für jeden Vertrag, der von Ihrem Dienst implementiert wird.If you do not add a <service> section or add any endpoints in a <service> section and your service does not programmatically define any endpoints, then a set of default endpoints are automatically added to your service, one for each service base address and for each contract implemented by your service. An jedem dieser Endpunkte entspricht die Endpunktadresse der Basisadresse, die Bindung wird anhand des Basisadressenschemas bestimmt, und der Vertrag ist der Vertrag, der vom Dienst implementiert wird.In each of these endpoints, the endpoint address corresponds to the base address, the binding is determined by the base address scheme and the contract is the one implemented by your service. Wenn es nicht erforderlich ist, Endpunkte oder Dienstverhalten anzugeben oder Änderungen an den Bindungseinstellungen vorzunehmen, müssen Sie keine Dienstkonfigurationsdatei angeben.If you do not need to specify any endpoints or service behaviors or make any binding setting changes, you do not need to specify a service configuration file at all. Wenn ein Dienst zwei Verträge implementiert und der Host sowohl HTTP- als auch TCP-Transporte zulässt, erstellt der Diensthost vier Standardendpunkte, einen für jeden Vertrag mit den einzelnen Transporten.If a service implements two contracts and the host enables both HTTP and TCP transports the service host creates four default endpoints, one for each contract using each transport. Um Standardendpunkte zu erstellen, muss der Diensthost wissen, welche Bindungen verwendet werden können.To create default endpoints the service host must know what bindings to use. Diese Einstellungen werden in einem <protocolMappings> Abschnitt innerhalb des Abschnitts <system.serviceModel> angegeben.These settings are specified in a <protocolMappings> section within the <system.serviceModel> section. Der AbschnittprotocolMappings< > enthält eine Liste von Transportprotokoll Schemas, die Bindungs Typen zugeordnet sind.The <protocolMappings> section contains a list of transport protocol schemes mapped to binding types. Der Diensthost verwendet die übergebene Basisadresse, um die zu verwendende Bindung zu ermitteln.The service host uses the base addresses passed to it to determine which binding to use. Im folgenden Beispiel wird das <protocolMappings>-Element verwendet.The following example uses the <protocolMappings> element.

Warnung

Das Ändern von Standardkonfigurationselementen, z. B. Bindungen oder Verhalten, wirkt sich möglicherweise auf Dienste aus, die auf niedrigeren Ebenen der Konfigurationshierarchie definiert sind, da sie eventuell diese Standardbindungen bzw. dieses Standardverhalten verwenden.Changing default configuration elements, such as bindings or behaviors, might affect services defined in lower levels of the configuration hierarchy, since they might be using these default bindings and behaviors. Daher muss jede Person, die Standardbindungen und -verhalten ändert, berücksichtigen, dass sich diese Änderungen auf andere Dienste in der Hierarchie auswirken können.Thus, whoever changes default bindings and behaviors needs to be aware that these changes might affect other services in the hierarchy.

Hinweis

Unter Internetinformationsdienste (IIS) oder dem Windows-Prozessaktivierungsdienst (WAS) gehostete Dienste verwenden das virtuelle Verzeichnis als Basisadresse.Services hosted under Internet Information Services (IIS) or Windows Process Activation Service (WAS) use the virtual directory as their base address.

<protocolMapping>  
  <add scheme="http"     binding="basicHttpBinding" bindingConfiguration="MyBindingConfiguration"/>  
  <add scheme="net.tcp"  binding="netTcpBinding"/>  
  <add scheme="net.pipe" binding="netNamedPipeBinding"/>  
  <add scheme="net.msmq" binding="netMSMQBinding"/>  
</protocolMapping>  

Im vorherigen Beispiel verwendet ein Endpunkt mit einer Basisadresse, die mit dem Schema "http" beginnt, das BasicHttpBinding-Objekt.In the previous example, an endpoint with a base address that starts with the "http" scheme uses the BasicHttpBinding. Ein Endpunkt mit einer Basisadresse, die mit dem Schema "net.tcp" beginnt, verwendet das NetTcpBinding-Objekt.An endpoint with a base address that starts with the "net.tcp" scheme uses the NetTcpBinding. Sie können Einstellungen in einer lokalen App.config- oder Web.config-Datei überschreiben.You can override settings in a local App.config or Web.config file.

Jedes Element innerhalb des AbschnittsprotocolMappings< > muss ein Schema und eine Bindung angeben.Each element within the <protocolMappings> section must specify a scheme and a binding. Optional kann ein bindingConfiguration -Attribut angegeben werden, das eine Bindungs Konfiguration im Abschnittbindings< > der Konfigurationsdatei angibt.Optionally it can specify a bindingConfiguration attribute that specifies a binding configuration within the <bindings> section of the configuration file. Wenn keine bindingConfiguration angegeben wird, wird die anonyme Bindungskonfiguration des entsprechenden Bindungstyps verwendet.If no bindingConfiguration is specified, the anonymous binding configuration of the appropriate binding type is used.

Dienst Verhaltensweisen werden für die Standard Endpunkte konfiguriert, indembehavioranonyme < > AbschnitteserviceBehaviorsinnerhalb < > Abschnitte verwendet werden.Service behaviors are configured for the default endpoints by using anonymous <behavior> sections within <serviceBehaviors> sections. Alle unbenanntenbehavior< > Elemente innerhalbserviceBehaviors< > werden verwendet, um Dienst Verhaltensweisen zu konfigurieren.Any unnamed <behavior> elements within <serviceBehaviors> are used to configure service behaviors. Die folgende Konfigurationsdatei ermöglicht z. B. die Veröffentlichung von Dienstmetadaten für alle Dienste innerhalb des Hosts.For example, the following configuration file enables service metadata publishing for all services within the host.

<system.serviceModel>  
    <behaviors>  
      <serviceBehaviors>  
        <behavior>  
          <serviceMetadata httpGetEnabled="True"/>  
        </behavior>  
      </serviceBehaviors>  
    </behaviors>    <!-- No <service> tag is necessary. Default endpoints are added to the service -->  
    <!-- The service behavior with name="" is picked up by the service -->  
 </system.serviceModel>  

Endpunkt Verhaltensweisen werden mithilfe anonymerbehavior< > Abschnitte innerhalbserviceBehaviors< > Abschnitte konfiguriert.Endpoint behaviors are configured by using anonymous <behavior> sections within <serviceBehaviors> sections.

Das folgende Beispiel zeigt eine Konfigurationsdatei, die der Datei am Anfang dieses Themas ähnelt, in der das vereinfachte Konfigurationsmodell verwendet wird.The following example is a configuration file equivalent to the one at the beginning of this topic that uses the simplified configuration model.

<system.serviceModel>
    <behaviors>
      <serviceBehaviors>
        <behavior>
          <serviceMetadata httpGetEnabled="true" />
          <serviceDebug includeExceptionDetailInFaults="false" />
        </behavior>
      </serviceBehaviors>
    </behaviors>
    <bindings>
       <basicHttpBinding>
          <binding maxBufferSize="100"
                   maxReceiveBufferSize="100" />
       </basicHttpBinding>
    </bindings>
    <!-- No <service> tag is necessary. Default endpoints will be added to the service -->
    <!-- The service behavior with name="" will be picked up by the service -->
    <protocolMapping>
      <add scheme="http" binding="basicHttpBinding" />
  </protocolMapping>
  </system.serviceModel>

Wichtig

Diese Funktion ist nur für die WCF-Dienstkonfiguration, nicht für die Clientkonfiguration relevant.This feature relates only to WCF service configuration, not client configuration. WCF-Clientkonfigurationen werden meistens von einem Tool, z. B. svcutil.exe, oder durch Hinzufügen eines Dienstverweises aus Visual Studio generiert.Most times, WCF client configuration will be generated by a tool such as svcutil.exe or adding a service reference from Visual Studio. Wenn Sie einen WCF-Client manuell konfigurieren, müssen Sie der Konfiguration ein <Client >-Element hinzufügen und alle Endpunkte angeben, die Sie abrufen möchten.If you are manually configuring a WCF client you will need to add a <client> element to the configuration and specify any endpoints you wish to call.

Siehe auchSee also