Resolver problemas dos tutoriais introdução ao Windows Communication Foundation

Este artigo fornece soluções para os problemas e erros mais comuns que poderá enfrentar quando seguir os passos no Tutorial: Introdução às aplicações do Windows Communication Foundation.

Problemas comuns

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

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

Não consigo encontrar o ficheiro deApp.config gerado pelo Svcutil.exe.

No Visual Studio, a janela Adicionar Item Existente só apresenta ficheiros com as seguintes extensões por predefinição:

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

Para apresentar todos os tipos de ficheiro, selecione Todos os Ficheiros (*.*) na lista pendente no canto inferior direito da janela Adicionar Item Existente .

Erros comuns

Compilar a aplicação de serviço

O erro BC30420 "Sub Main" não foi encontrado em "GettingStartedHost.Module1".

O ponto de entrada está incorreto para a aplicação Visual Basic. Faça a seguinte alteração:

  1. Na janela Explorador de Soluções, selecione a pasta GettingStartedHost e, em seguida, selecione Propriedades no menu de atalho. a. Na janela GettingStartedHost , para Objeto de arranque, selecione Service.Program (ou o ponto de entrada da sua aplicação específica) na lista. b. No menu principal, selecioneGuardar Todos os Ficheiros>.

Executar a aplicação de serviço

O HTTP não conseguiu registar o URL "http://+:8000/GettingStarted/CalculatorService". O seu processo não tem direitos de acesso a este espaço de nomes.

Para um acesso adequado, inicie o processo de alojamento do serviço Windows Communication Foundation (WCF) com privilégios administrativos:

  • Para Visual Studio: selecione o programa Visual Studio no menu Iniciar e, em seguida, selecione Mais>Executar como administrador no menu de atalho.
  • Para uma janela da consola: selecione Linha de Comandos no menu Iniciar e, em seguida, selecione Mais>Administrador Run As no menu de atalho.
  • Para o Explorador do Windows: selecione o executável e, em seguida, selecione Executar como administrador no menu de atalho.

Compilar a aplicação cliente

"CalculatorClient", não contém uma definição para "<nome> do método" e não foi possível encontrar um método de extensão "<nome> do método" que aceite um primeiro argumento do tipo "CalculatorClient" (falta-lhe uma diretiva ou uma referência de assemblagem?)

Apenas os métodos que marcar com o ServiceOperationAttribute atributo são expostos publicamente. Se omitir o ServiceOperationAttribute atributo de um método na ICalculator interface, receberá esta mensagem de erro durante a compilação.

Não foi possível encontrar o tipo ou o nome do espaço de nomes "CalculatorClient" (falta-lhe uma diretiva ou uma referência de assemblagem?)

Receberá este erro se não adicionar o ficheiro generatedProxy.cs (ou generatedProxy.vb) ao projeto de cliente quando os gerou com a ferramenta Svcutil.exe .

Executar a aplicação cliente

Exceção Não Processada: System.ServiceModel.EndpointNotFoundException: Não foi possível ligar a "http://localhost:8000/GettingStarted/CalculatorService". Código de erro TCP 10061: não foi possível efetuar nenhuma ligação porque o computador de destino o recusou ativamente.

Este erro ocorre se executar a aplicação cliente sem iniciar primeiro o serviço. Primeiro, execute a aplicação anfitriã para iniciar o serviço e, em seguida, execute a aplicação cliente.

Utilizar a ferramenta Svcutil.exe

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

Svcutil.exe tem de estar no caminho do sistema. A solução mais fácil é utilizar a linha de comandos do Visual Studio. No menu Iniciar, selecione o diretório versão> do Visual Studio < e, em seguida, selecione Linha de Comandos do Programador para a versão> VS<. Esta linha de comandos define o caminho do sistema para as localizações corretas para todas as ferramentas enviadas como parte do Visual Studio.

Executar o serviço e as aplicações 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"

Este erro ocorre num computador associado a um domínio que não tem conectividade de rede. Ligue o 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 com o seguinte código:

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

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

Ver também

Introdução às aplicações WCF
Início rápido da resolução de problemas do WCF
Resolver problemas de configuração