Compartilhar via


Como: criar um ponto de extremidade de serviço em configuração

Os pontos de extremidade fornecem aos clientes acesso à funcionalidade oferecida por um serviço WCF (Windows Communication Foundation). Você pode definir um ou mais pontos de extremidade para um serviço usando uma combinação de endereços de ponto de extremidade relativos e absolutos ou, se você não definir nenhum ponto de extremidade de serviço, o runtime fornecerá alguns por padrão. Este tópico mostra como adicionar pontos de extremidade usando um arquivo de configuração que contém endereços relativos e absolutos.

Exemplo 1

A configuração de serviço a seguir especifica um endereço básico e cinco pontos de extremidade.

<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>

Exemplo 2

O endereço básico é especificado com o elemento add, em service/host/baseAddresses, conforme mostrado no exemplo a seguir.

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

Exemplo 3

A primeira definição de ponto de extremidade mostrada no exemplo a seguir especifica um endereço relativo, o que significa que o endereço do ponto de extremidade é uma combinação do endereço básico e do endereço relativo seguindo as regras de composição do URI (Uniform Resource Identifier). O endereço relativo está vazio ("") e, portanto, o endereço do ponto de extremidade é o mesmo que o endereço básico. O endereço real do ponto de extremidade é http://localhost:8000/servicemodelsamples/service.

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

Exemplo 4

A segunda definição de ponto de extremidade também especifica um endereço relativo, conforme mostrado na configuração de exemplo a seguir. O endereço relativo, "teste", é acrescentado ao endereço básico. O endereço real do ponto de extremidade é http://localhost:8000/servicemodelsamples/service/test.

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

Exemplo 5

A definição do terceiro ponto de extremidade especifica um endereço absoluto, conforme mostrado na configuração de exemplo a seguir. O endereço básico não desempenha nenhuma função no endereço. O endereço real do ponto de extremidade é http://localhost:8001/hello/servicemodelsamples.

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

Exemplo 6

O quarto endereço de ponto de extremidade especifica um endereço absoluto e um transporte diferente, TCP. O endereço básico não desempenha nenhuma função no endereço. O endereço real do ponto de extremidade é net.tcp://localhost:9000/servicemodelsamples/service.

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

Exemplo 7

Para usar os pontos de extremidade padrão fornecidos pelo runtime, não especifique nenhum ponto de extremidade de serviço no código ou no arquivo de configuração. Neste exemplo, o runtime cria os pontos de extremidade padrão quando o serviço é aberto. Para obter mais informações sobre pontos de extremidade, associações e comportamentos padrão, confira Configuração simplificada e Configuração simplificada para serviços WCF.

<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>