Freigeben über


Gewusst wie: Angeben einer Dienstbindung in einer Konfiguration

In diesem Beispiel wird ein ICalculator-Vertrag für einen grundlegenden Rechnerdienst definiert. Der Dienst wird in die CalculatorService-Klasse implementiert. Anschließend wird der Endpunkt in der Datei "Web.config" konfiguriert, in der angegeben wird, dass der Dienst die BasicHttpBinding verwendet. Eine Beschreibung der Konfiguration des Dienstes mithilfe von Code anstelle einer Konfiguration finden Sie unter Gewusst wie: Angeben einer Dienstbindung im Code.

Normalerweise ist es die bewährte Methode, die Bindung anzugeben und die Informationen deklarativ in der Konfiguration anzusprechen anstatt imperativ im Code. Die Definition von Endpunkten im Code ist normalerweise nicht geeignet, da sich die Bindungen und die Adressen eines bereitgestellten Dienstes normalerweise von denen unterscheiden, die während der Entwicklung des Dienstes verwendet wurden. Allgemeiner gesagt ermöglicht das Ausschließen der Bindung und der Adressierungsinformationen aus dem Code, sie zu ändern, ohne die Anwendung neu kompilieren oder erneut bereitstellen zu müssen.

Alle folgenden Konfigurationsschritte können mit dem Configuration Editor Tool (SvcConfigEditor.exe) durchgeführt werden.

Die Quellkopie dieses Beispiels finden Sie unter Basic Binding Samples.

So geben Sie die BasicHttpBinding zur Konfiguration des Dienstes an

  1. Definieren Sie einen Dienstvertrag für den Diensttyp.

  2. Implementieren Sie den Dienstvertrag in einer Dienstklasse.

    Tipp

    Die Adresse oder die Bindungsinformationen werden nicht in der Implementierung des Dienstes angegeben. Ebenso wenig muss Code geschrieben werden, um diese Informationen aus der Konfigurationsdatei abzurufen.

  3. Erstellen Sie eine Web.config-Datei, um einen Endpunkt für den CalculatorService zu konfigurieren, der die WSHttpBinding verwendet.

    <?xml version="1.0" encoding="utf-8" ?>
    <configuration>
      <system.serviceModel>
        <services>
          <service name=" CalculatorService" >
            <endpoint 
            <-- Leave the address blank to be populated by default-->
            <--from the hosting environment,in this case IIS, so -->
            <-- the address will just be that of the IIS Virtual -->
            <--Directory.-->
                address="" 
            <--Specify the binding type -->
                binding="wsHttpBinding"
            <--Specify the binding configuration name for that -->
            <--binding type. This is optional but useful if you  -->
            <--want to modify the properties of the binding. -->
            <--The bindingConfiguration name Binding1 is defined  -->
            <--below in the bindings element.  -->
                bindingConfiguration="Binding1"
                contract="ICalculator" />
          </service>
        </services>
        <bindings>
          <wsHttpBinding>
            <binding name="Binding1">
              <-- Binding property values can be modified here. -->
              <--See the next procedure. -->
            </binding>
          </wsHttpBinding>
       </bindings>
      </system.serviceModel>
    </configuration>
    
  4. Erstellen Sie eine Service.svc-Datei, die die folgende Zeile enthält, und platzieren Sie sie im virtuellen IIS-Verzeichnis.

    <%@ServiceHost language=c# Service="CalculatorService" %> 
    

So ändern Sie die Standardwerte für die Bindungseigenschaften

  1. Erstellen Sie zum Bearbeiten der Standardeigenschaftenwerte der WSHttpBinding im <wsHttpBinding>-Element einen neuen Bindungskonfigurationsnamen (<binding name="Binding1">), und legen Sie die neuen Werte für die Attribute der Bindung in diesem Bindungselement fest. Wenn Sie beispielsweise die standardmäßigen Timeoutwerte für das Öffnen und Schließen von 1 Minute in 2 Minuten ändern möchten, fügen Sie Folgendes der Konfigurationsdatei hinzu:

          <wsHttpBinding>
            <binding name="Binding1"
                     closeTimeout="00:02:00"
                     openTimeout="00:02:00">
            </binding>
          </wsHttpBinding>
    

Siehe auch

Konzepte

Verwenden von Bindungen, um Dienste und Clients zu konfigurieren
Angeben einer Endpunktadresse