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:
- 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