Compartilhar via


Comportamento de depuração de serviço

O exemplo ServiceDebug demonstra como as configurações de comportamento de depuração do serviço podem ser ajustadas. O exemplo é baseado no Guia de Início, que implementa o ICalculator contrato de serviço. Este exemplo define explicitamente o comportamento da depuração de serviço no arquivo de configuração. Também pode ser feito de forma imperativa no código.

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

Observação

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

O arquivo Web.config para o servidor define o comportamento de 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 de comportamento de depuração de 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 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 inesperada do servidor pode conter algumas informações que não se destinam ao cliente e, portanto, definir 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 endpoint onde se pode obter o WSDL do serviço. Isso pode ser habilitado definindo httpHelpPageEnabled como true. Isso permite que a página de ajuda seja retornada a 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 e respostas da operação 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 ("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 avulsa dos 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 o exemplo em uma configuração única ou entre máquinas, siga as instruções em Executando os exemplos do Windows Communication Foundation.