Delen via


Procedure: Een service-eindpunt maken in configuratie

Eindpunten bieden clients toegang tot de functionaliteit die een WCF-service (Windows Communication Foundation) biedt. U kunt een of meer eindpunten voor een service definiƫren met behulp van een combinatie van relatieve en absolute eindpuntadressen, of als u geen service-eindpunten definieert, biedt de runtime een aantal standaard voor u. In dit onderwerp wordt beschreven hoe u eindpunten toevoegt met behulp van een configuratiebestand dat zowel relatieve als absolute adressen bevat.

Voorbeeld 1

De volgende serviceconfiguratie geeft een basisadres en vijf eindpunten op.

<configuration>

  <appSettings>
    <!-- use appSetting to configure base address provided by host -->
    <add key="baseAddress" value="http://localhost:8000/servicemodelsamples/service" />
  </appSettings>

  <system.serviceModel>
    <services>
    <!-- This section is optional with the default configuration introduced in .NET Framework 4. -->
      <service name="Microsoft.ServiceModel.Samples.CalculatorService">
        <host>
          <baseAddresses>
            <add baseAddress="http://localhost:8000/ServiceModelSamples/service"/>
          </baseAddresses>
        </host>
        <endpoint address=""
                  binding="wsHttpBinding"
                  contract="Microsoft.ServiceModel.Samples.ICalculator" />
        <endpoint address="/test"
                  binding="wsHttpBinding"
                  contract="Microsoft.ServiceModel.Samples.ICalculator" />
        <endpoint address="http://localhost:8001/hello/servicemodelsamples"
                  binding="wsHttpBinding"
                  contract="Microsoft.ServiceModel.Samples.ICalculator" />
        <endpoint address="net.tcp://localhost:9000/servicemodelsamples/service"
                  binding="netTcpBinding"
                  contract="Microsoft.ServiceModel.Samples.ICalculator" />
        <!-- the mex endpoint is another relative address exposed at
             http://localhost:8000/ServiceModelSamples/service/mex -->
        <endpoint address="mex"
                  binding="mexHttpBinding"
                  contract="IMetadataExchange" />
      </service>
    </services>

    <!--For debugging purposes set the includeExceptionDetailInFaults attribute to true-->
    <behaviors>
      <serviceBehaviors>
        <behavior>
          <serviceMetadata httpGetEnabled="True"/>
          <serviceDebug includeExceptionDetailInFaults="False" />
        </behavior>
      </serviceBehaviors>
    </behaviors>

  </system.serviceModel>

</configuration>

Voorbeeld 2

Het basisadres wordt opgegeven met behulp van het add element, onder service/host/baseAddresses, zoals wordt weergegeven in het volgende voorbeeld.

<service
    name="Microsoft.ServiceModel.Samples.CalculatorService">
  <host>
    <baseAddresses>
      <add baseAddress="http://localhost:8000/ServiceModelSamples/service"/>
    </baseAddresses>
  </host>
</service>

Voorbeeld 3

De eerste eindpuntdefinitie die in het volgende voorbeeld wordt weergegeven, geeft een relatief adres op, wat betekent dat het eindpuntadres een combinatie is van het basisadres en het relatieve adres volgens de regels van de URI-samenstelling (Uniform Resource Identifier). Het relatieve adres is leeg (""), dus het eindpuntadres is hetzelfde als het basisadres. Het werkelijke eindpuntadres is http://localhost:8000/servicemodelsamples/service.

<endpoint address=""
    binding="wsHttpBinding"
    contract="Microsoft.ServiceModel.Samples.ICalculator" />

Voorbeeld 4

De tweede eindpuntdefinitie geeft ook een relatief adres op, zoals wordt weergegeven in de volgende voorbeeldconfiguratie. Het relatieve adres, test, wordt toegevoegd aan het basisadres. Het werkelijke eindpuntadres is http://localhost:8000/servicemodelsamples/service/test.

<endpoint address="/test"
    binding="wsHttpBinding"
    contract="Microsoft.ServiceModel.Samples.ICalculator" />

Voorbeeld 5

De definitie van het derde eindpunt geeft een absoluut adres op, zoals wordt weergegeven in de volgende voorbeeldconfiguratie. Het basisadres speelt geen rol in het adres. Het werkelijke eindpuntadres is http://localhost:8001/hello/servicemodelsamples.

<endpoint address="http://localhost:8001/hello/servicemodelsamples"
    binding="wsHttpBinding"
    contract="Microsoft.ServiceModel.Samples.ICalculator" />

Voorbeeld 6

Het vierde eindpuntadres geeft een absoluut adres en een ander transport aan: TCP. Het basisadres speelt geen rol in het adres. Het werkelijke eindpuntadres is net.tcp://localhost:9000/servicemodelsamples/service.

<endpoint address="net.tcp://localhost:9000/servicemodelsamples/service"
    binding="netTcpBinding"
    contract="Microsoft.ServiceModel.Samples.ICalculator" />

Voorbeeld 7

Als u de standaardeindpunten van de runtime wilt gebruiken, geeft u geen service-eindpunten op in de code of het configuratiebestand. In dit voorbeeld maakt de runtime de standaardeindpunten wanneer de service wordt geopend. Zie Vereenvoudigde configuratie en vereenvoudigde configuratie voor WCF-services voor meer informatie over standaardeindpunten, bindingen en gedrag.

<configuration>

  <appSettings>
    <!-- use appSetting to configure base address provided by host -->
    <add key="baseAddress" value="http://localhost:8000/servicemodelsamples/service" />
  </appSettings>

  <system.serviceModel>
    <!--For debugging purposes set the includeExceptionDetailInFaults attribute to true-->
    <behaviors>
      <serviceBehaviors>
        <behavior>
          <serviceMetadata httpGetEnabled="True"/>
          <serviceDebug includeExceptionDetailInFaults="False" />
        </behavior>
      </serviceBehaviors>
    </behaviors>

  </system.serviceModel>

</configuration>