Compartilhar via


Tutoriais sobre Solucionar problemas dos tutoriais do Windows Communication Foundation

Este artigo fornece soluções para os problemas e erros mais comuns que você pode encarar ao seguir as etapas no Tutorial: Introdução aos aplicativos do Windows Communication Foundation.

Problemas comuns

Não consigo encontrar os arquivos do projeto no meu disco rígido.

O Visual Studio salva arquivos de projeto em C:\Users\<user name>\source\repos.

Não consigo encontrar o arquivo App.config gerado pelo Svcutil.exe.

No Visual Studio, a janela Adicionar item existente exibe apenas arquivos com as seguintes extensões por padrão:

  • .cs
  • .resx
  • .settings
  • .xsd
  • .wsdl

Para exibir todos os tipos de arquivo, selecione Todos os Arquivos (*.*) na lista suspensa no canto inferior direito da janela Adicionar item existente.

Erros comuns

Criar o aplicativo de serviço

Erro BC30420 'Sub Main' não foi encontrado em 'GettingStartedHost.Module1'.

O ponto de entrada está incorreto para o aplicativo Visual Basic. Faça as seguintes alterações:

  1. Na janela Gerenciador de Soluções, selecione a pasta GettingStartedHost e selecione Propriedades no menu de atalho. a. Na janela GettingStartedHost, para o objeto Startup, selecione Service.Program (ou o ponto de entrada para seu aplicativo específico) na lista. b. No menu principal, selecione Arquivo>Salvar tudo.

Executar o aplicativo de serviço

O HTTP não pôde registrar a URL 'http://+:8000/GettingStarted/CalculatorService'. Seu processo não tem direitos de acesso a esse namespace.

Para acesso adequado, inicie o processo que hospeda o serviço WCF (Windows Communication Foundation) com privilégios administrativos:

  • Para o Visual Studio: selecione o programa do Visual Studio no menu Iniciar e selecione Mais>Executar como administrador no menu de atalho.
  • Para uma janela do console: selecione o Prompt de comando no menu Iniciar e selecione Mais>Executar como administrador no menu de atalho.
  • Para o Windows Explorer: selecione o executável e, em seguida, selecione Executar como administrador no menu de atalho.

Criar o aplicativo cliente

'CalculatorClient', não contém uma definição para '<method name>', e não foi possível encontrar nenhum método de extensão '<method name>' que aceite um primeiro argumento do tipo 'CalculatorClient' (há uma diretiva de uso ou referência de assembly ausente?)

Somente os métodos que você marca com o atributo ServiceOperationAttribute são expostos publicamente. Se você omitir o atributo ServiceOperationAttribute de um método na interface ICalculator, receberá essa mensagem de erro durante a compilação.

O nome do tipo ou do namespace 'CalculatorClient' não pode ser encontrado (está faltando uma diretiva de uso ou uma referência de assembly?)

Você receberá esse erro se não adicionar o arquivo generatedProxy.cs (ou generatedProxy.vb) ao projeto cliente ao gerá-los com a ferramenta Svcutil.exe.

Executar o aplicativo cliente

Exceção sem tratamento: System.ServiceModel.EndpointNotFoundException: não foi possível se conectar a 'http://localhost:8000/GettingStarted/CalculatorService'. Código de erro de TCP 10061: nenhuma conexão pôde ser estabelecida porque a máquina de destino recusou-a ativamente.

Esse erro ocorre se você executar o aplicativo cliente sem iniciar o serviço primeiro. Primeiro execute o aplicativo host para iniciar o serviço, e então execute o aplicativo cliente.

Usar a ferramenta Svcutil.exe

'Svcutil' não é reconhecido como um comando interno ou externo, programa operável ou arquivo em lote.

Svcutil.exe deve estar no caminho do sistema. A solução mais fácil é usar o prompt de comando do Visual Studio. No menu Iniciar, selecione o diretório Visual Studio <versão> e, em seguida, selecione o Prompt de Comando do Desenvolvedor para VS <versão>. Esse prompt de comando define o caminho do sistema nos locais corretos para todas as ferramentas enviadas como parte do Visual Studio.

Executar o serviço e os aplicativos cliente

System.ServiceModel.Security.SecurityNegotiationException: falha na negociação de segurança SOAP com 'http://localhost:8000/GettingStarted/CalculatorService' para o destino 'http://localhost:8000/GettingStarted/CalculatorService'

Esse erro ocorre em um computador ingressado no domínio sem conectividade de rede. Conecte seu computador à rede ou desative a segurança do serviço e do cliente.

Para desativar a segurança:

  • Para o serviço, substitua o código que cria o WSHttpBinding pelo código a seguir:

    // Step 3: Add a service endpoint.
    selfhost.AddServiceEndpoint(typeof(ICalculator), new WSHttpBinding(SecurityMode.None), "CalculatorService");  
    
  • Para o cliente, no arquivo de configuração, atualize o elemento de <segurança> no elemento de <associação> da seguinte maneira:

    <binding name="WSHttpBinding_ICalculator">
      <security mode="None" />
    </binding>
    

Confira também

Introdução a aplicativos WCF
Início rápido de solução de problemas do WCF
Solução de problemas de instalação