Vereinfachte KonfigurationSimplified Configuration

Konfigurieren von Windows Communication Foundation (WCF)-Dienste kann aufwändig 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. Während der Konfigurationsdateien erhöhen die Flexibilität des WCF-Dienste sind auch die Quelle für viele schwer zu findende 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 WCF-Dienst-Konfigurationsdateien die <system.serviceModel> Abschnitt enthält ein <service>-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 von <endpoint>-Elementen, die die Endpunkte für die einzelnen Dienste und optional ein Satz von Dienstverhalten 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, die bzw. der vom Endpunkt verfügbar gemacht wurde, und optional die Bindungskonfiguration und die Endpunktverhalten an.The <endpoint> elements specify the address, binding, and contract exposed by the endpoint, and optionally binding configuration and endpoint behaviors. Der Abschnitt <system.serviceModel> enthält auch ein <behaviors>-Element, mit dem Sie Dienst- oder Endpunktverhaltensweisen angeben können.The <system.serviceModel> section also contains a <behaviors> element that allows you to specify service or endpoint behaviors. Das folgende Beispiel enthält den Abschnitt <system.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.1 vereinfacht das Konfigurieren eines WCF-Diensts einfacher durch Entfernen der Forderung nach dem <service> Element. makes configuring a WCF service easier by removing the requirement for the <service> element. Wenn Sie keinen <service>-Abschnitt oder keine Endpunkte in einem <service>-Abschnitt hinzufügen und der Dienst nicht programmgesteuert Endpunkte definiert, wird dem Dienst automatisch ein Satz von Standardendpunkten hinzugefügt, und zwar ein Endpunkt für jede Dienstbasisadresse und für jeden vom Dienst implementierten Vertrag.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 Abschnitt <protocolMappings> enthält eine Liste von Transportprotokollschemas, die Bindungstypen 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 Abschnitts <protocolMappings> muss ein Schema und eine Bindung angeben.Each element within the <protocolMappings> section must specify a scheme and a binding. Optional kann es ein bindingConfiguration-Attribut angeben, dass eine Bindungskonfiguration im Abschnitt <bindings> 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.

Die Dienstverhaltensweisen werden für die Standardendpunkte konfiguriert, indem anonyme <behavior>-Abschnitte innerhalb von <serviceBehaviors>-Abschnitten verwendet werden.Service behaviors are configured for the default endpoints by using anonymous <behavior> sections within <serviceBehaviors> sections. Alle unbenannten <behavior>-Elemente innerhalb von <serviceBehaviors> werden verwendet, um Dienstverhaltensweisen 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>  

Endpunktverhaltensweisen werden konfiguriert, indem anonyme <behavior>-Abschnitte innerhalb von <serviceBehaviors>-Abschnitten verwendet werden.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 zum Hinzufügen einer <Client > Element an der Konfiguration, und geben Sie keine Endpunkte, die Sie aufrufen 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

Konfigurieren von Diensten mit KonfigurationsdateienConfiguring Services Using Configuration Files
Konfigurieren von Bindungen für DiensteConfiguring Bindings for Services
Konfigurieren der vom System bereitgestellten BindungenConfiguring System-Provided Bindings
Konfigurieren von DienstenConfiguring Services
Konfigurieren von Windows Communication Foundation-AnwendungenConfiguring Windows Communication Foundation Applications
Konfigurieren von WCF-Diensten in CodeConfiguring WCF Services in Code