Compartilhar via


Comportamento de depuração de serviço

O exemplo de ServiceDebug demonstra como as configurações de comportamento da depuração de serviço podem ser definidas. O exemplo baseia-se na Introdução, que implementa o contrato de serviço ICalculator. Este exemplo define explicitamente o comportamento da depuração de serviço no arquivo de configuração. Ele também pode ser feito de maneira imperativa no código.

Neste exemplo, o cliente é um aplicativo de console (.exe) e o serviço é hospedado pelo IIS (Serviços de Informações da Internet).

Observação

O procedimento de instalação e as instruções de build desse exemplo estão no final deste tópico.

O arquivo Web.config para o servidor define o comportamento da depuração de serviço para habilitar a página de ajuda e o tratamento de exceções, conforme mostrado no exemplo a seguir.

<behaviors>
     <serviceBehaviors>
         <behavior name="CalculatorServiceBehavior">
         <!-- WARNING: Setting includeExceptionDetailInFaults = "True" could result in leaking secured server information to the client.-->
         <!-- Please set this to false when deploying -->
             <serviceDebug includeExceptionDetailInFaults="True" httpHelpPageEnabled="True"/>
         </behavior>
     </serviceBehaviors>
</behaviors>

<serviceDebug> é o elemento de configuração que permite alterar as propriedades do comportamento de depuração do serviço. O usuário pode modificar esse comportamento para obter o seguinte:

  • Isso permite que o serviço retorne qualquer exceção gerada pelo código do aplicativo mesmo que a exceção não seja declarada usando o FaultContractAttribute. Isso é feito pela definição de includeExceptionDetailInFaults como true. Essa configuração é útil ao depurar casos em que o servidor gera uma exceção inesperada.

    Importante

    Não é seguro ativar essa configuração em um ambiente de produção. Uma exceção inesperada do servidor pode ter algumas informações que não se destinam ao cliente e, portanto, a configuração de includeExceptionDetailsInFaults como true pode resultar em um vazamento de informações.

  • O <serviceDebug> também permite que um usuário habilite ou desabilite a página de ajuda. Cada serviço pode, opcionalmente, expor uma página de ajuda que contém informações sobre o serviço, incluindo o ponto de extremidade para obter o WSDL para o serviço. Isso pode ser habilitado definindo httpHelpPageEnabled como true. É uma forma de a página de ajuda ser retornada a uma solicitação GET para o endereço básico do serviço. Você pode alterar esse endereço definindo outro atributo httpHelpPageUrl. Torne isso seguro usando HTTPS em vez de HTTP. Isso pode ser feito pela definição de httpsHelpPageEnabled e httpsHelpPageUrl.

Quando você executa o exemplo, as solicitações de operação e as respostas são exibidas na janela do console do cliente. As três primeiras operações (Adicionar, Subtrair e Multiplicar) precisam dar certo. A última operação ("divide") falha com uma exceção de divisão por zero.

Para configurar, compilar, e executar o exemplo

  1. Verifique se você executou o Procedimento de instalação única para os exemplos do Windows Communication Foundation.

  2. Para compilar a edição .NET do C# ou do Visual Basic da solução, siga as instruções contidas em Como Compilar as Amostras do Windows Communication Foundation.

  3. Para executar a amostra em uma configuração de computador único ou entre computadores, siga as instruções contidas em Como executar as amostras do Windows Communication Foundation.