Compartilhar via


Limitações na depuração do WCF

Há três maneiras de começar a depurar um serviço WCF:

  • Você está depurando um processo de cliente que chama um serviço. O depurador entra no serviço. O serviço não precisa estar na mesma solução que seu aplicativo cliente.

  • Você está depurando o processo de um cliente que faz uma solicitação para um serviço. O serviço deve fazer parte da sua solução.

  • Você usa Anexar ao Processo para anexar a um serviço que está em execução no momento. A depuração começa dentro do serviço.

Este tópico descreve as limitações nesses cenários.

Limitações ao entrar em um serviço

Para acessar um serviço em um aplicativo cliente que você está depurando, as seguintes condições devem ser atendidas:

  • O cliente deve chamar o serviço usando um objeto cliente síncrono.

  • A operação de contrato não pode ser unidirecional.

  • Se o servidor for assíncrono, você não poderá exibir a pilha de chamadas completa enquanto estiver executando o código dentro do serviço.

  • A depuração deve ser habilitada com o seguinte código no arquivo app.config ou Web.config:

    <system.web>
      <compilation debug="true" />
    </system.web>
    

    Esse código só precisa ser adicionado uma vez. Você pode adicionar esse código editando o arquivo .config ou anexando ao serviço usando Anexar ao Processo. Quando você usa Anexar ao Processo em um serviço, o código de depuração é adicionado automaticamente ao arquivo .config. Depois disso, você pode depurar e analisar o serviço sem precisar editar o arquivo .config.

Limitações ao sair de um serviço

Sair de um serviço e voltar para o cliente tem as mesmas limitações descritas para entrar em um serviço. Além disso, o depurador deve ser anexado ao cliente. Se você estiver depurando um cliente e avançar para um serviço, o depurador permanecerá anexado ao serviço. Isso é verdade se você iniciou o cliente usando Iniciar Depuração ou anexou ao cliente usando Anexar ao Processo. Se você começou a depurar vinculando ao serviço, o depurador ainda não está vinculado ao cliente. Nesse caso, se você precisar sair do serviço e voltar para o cliente, primeiro deverá usar Anexar ao Processo para se anexar ao cliente manualmente.

Limitações na anexação automática a um serviço

A anexação automática a um serviço tem as seguintes limitações:

  • O serviço deve fazer parte da solução do Visual Studio que você está depurando.

  • O serviço deve ser hospedado. Ele pode fazer parte de um projeto de site (Sistema de Arquivos e HTTP), projeto de Aplicativo Web (Sistema de Arquivos e HTTP) ou projeto da Biblioteca de Serviços do WCF. Os projetos da Biblioteca de Serviços do WCF podem ser bibliotecas de serviço ou bibliotecas de serviço de fluxo de trabalho.

  • O serviço deve ser invocado de um cliente WCF.

  • A depuração deve ser habilitada com o seguinte código no arquivo app.config ou Web.config:

    <system.web>
      <compilation debug="true" />
    <system.web>
    

Auto-hospedagem

Um serviço auto-hospedado é um serviço WCF que não é executado dentro do IIS, do Host de Serviço do WCF ou do servidor de desenvolvimento do ASP.NET. Para obter informações sobre como depurar um serviço auto-hospedado, consulte Como depurar um serviço WCF Self-Hosted.

Se você vir a mensagem de erro"Não é possível entrar automaticamente no servidor.", repare a instalação do Visual Studio para tentar resolver o problema. Isso pode acontecer se você instalar o Visual Studio antes de instalar ASP.NET.