Erro Consumindo Servicos WCF: Object reference not set to an instance of an object
Os adaptadores do WCF vieram para resolver os problemas de interoperabilidade. Isso quer dizer que podemos usar o WCF para se conectar com qualquer webservice, seja ele em .NET ou em outra tecnologia, diferente do que muitos pensam por ai.
O que temos que ter em mente é que o WCF é feito em cima do padrão W3C, e por isso ele deve ser compatível com outras linguagens.
Porém, as vezes, ao tentar consumir um webservice com o Consume WCF Service Wizard pode resultar em uma mensagem de erro:
Object reference not set to an instance of an object
Causa:
Isso acontece pois pode ser que o WSDL foi publicado sem a declaração do targetNamespace.
Resolução:
1 - Usar o svcutil.exe para gerar o wsdl e o schema.
Clicar em Iniciar – Todos os Programas – Microsoft Visual Studio 2010 – Visual Studio Tools – Visual Studio Command Prompt. Digitar:
svcutil /target:metadata http://ServicoWCF.com.br/MetodoTeste
Feito isso vai gerar o WSDL e o XML Schema.
2 – Alterar o targetNamespace no arquivo WSDL gerado.
Abrir o WSDL gerado e o XML Schema no Visual Studio.
Copiar o targetNamespace do arquivo .xsd e colar no node <xsd:schema> do wsdl. Deve ficar assim:
<xsd:schema targetNamespace=”http://Something.com”>
3 - Importar os arquivos gerados com o Wizard Consume WCF Service
Clicar com o botão direito no projeto Add Generated Items – Consume WCF Service.
Escolher a opção Metadata Files (WSDL and XSD)
Adicionar os arquivos salvos no passo 2.
Deve funcionar agora!
Seja o primeiro a comentar ;)
Postar um comentário