Comportamento de depuração de serviço

O exemplo ServiceDebug demonstra como as configurações de comportamento de depuração de serviço podem ser configuradas. O exemplo é baseado na Introdução, que implementa o ICalculator contrato de serviço. Este exemplo define explicitamente o comportamento de depuração de serviço no arquivo de configuração. Também pode ser feito imperativamente em 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).

Nota

O procedimento de configuração e as instruções de compilação para este exemplo estão localizados no final deste tópico.

O arquivo Web.config para o servidor define o comportamento de depuração do 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 lançada pelo código do aplicativo, mesmo que a exceção não seja declarada usando o FaultContractAttribute. Isso é feito definindo includeExceptionDetailInFaults como true. Essa configuração é útil ao depurar casos em que o servidor está lançando uma exceção inesperada.

    Importante

    Não é seguro ativar essa configuração em um ambiente de produção. Uma exceção de servidor inesperada pode ter algumas informações que não se destinam ao cliente e, portanto, a configuração includeExceptionDetailsInFaults para 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 WSDL para o serviço. Isso pode ser ativado definindo httpHelpPageEnabled como true. Isso permite que a página de ajuda seja retornada para uma solicitação GET para o endereço base do serviço. Você pode alterar esse endereço definindo outro atributo httpHelpPageUrl. Você pode tornar isso seguro usando HTTPS em vez de HTTP. Isso pode ser feito definindo 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) devem ser bem-sucedidas. A última operação ("dividir") falha com uma divisão por exceção zero.

Para configurar, compilar e executar o exemplo

  1. Certifique-se de ter executado o procedimento de instalação única para os exemplos do Windows Communication Foundation.

  2. Para criar a edição C# ou Visual Basic .NET da solução, siga as instruções em Criando os exemplos do Windows Communication Foundation.

  3. Para executar o exemplo em uma configuração de máquina única ou cruzada, siga as instruções em Executando os exemplos do Windows Communication Foundation.