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