Buscar

Últimas inserções

Como recuperar a conexão subjacente no EntityFramework
MVC - Deserializar Objeto JSON
Gerando planilhas XLS para Excel com formatação de colunas
MD5 direto no Sql Server
Aplicação demora muito para inicializar quando VisualStudio está "Loading Symbols"
- TODAS AS DICAS

Top Poggers (sempre)

Jar Jar Binks (137)
Cuban Pete (127)
Tufo (28)

Top Poggers (30 dias)


Área restrita

Logon

pogMasters.NET

Início
Busca Avançada
Contato

RSS
 

WEBSERVICE ERROR : Soap Prefix Missing - Consumo do WebService do Protheus

ASP.NET

16/07/2010 por Jar Jar Binks


Olá Pessoal,

Desenvolvendo uma aplicação .NET que consome um WebService do Protheus obtive o seguinte erro: WEBSERVICE ERROR : Soap Prefix Missing .

Como sempre, isso aconteceu no ambiente de produção, e não no desenvolvimento, o que me levou à extensas pesquisas, graças ao desconhecido. Sem muitas delongas o que acontece é o seguinte:

Por algum motivo, ou configuração específica no cliente( que ainda não descobri) o .NET exige que o WebService em questão esteja com o mesmo Namespace que foi configurado quando a referência ao WS do Protheus foi definida.

Geralmente , creio eu, o pessoal que faz os WS no Protheus não define o Namespace. Já os WS no .NET vêm sempre com o "http://tempuri.org";.

Poderia ser "joão", "*", qualquer coisa, desde que se conformizassem.

Então , as soluções são:

1) mude o WebService no Protheus para o mesmo namespace que o .net está requerindo (colocando a tag NAMESPACE "http://LOCALHOST:8888/ws/UM_NAMESPACE_QUALQUER_QUE_SE_CONFORMIZA_COM_O_DOT_NET_"; , por exemplo )

#INCLUDE "PROTHEUS.CH"
#INCLUDE "APWEBSRV.CH"
//----------------------------------------------------------------------------//
// Retorna uma string
//----------------------------------------------------------------------------//

WsService Retorna_String Description "Retorna uma String de teste." NAMESPACE "http://LOCALHOST:8888/ws/UM_NAMESPACE_QUALQUER_QUE_SE_CONFORMIZA_COM_O_DOT_NET_";

WsData InfoInicial AS String

WsData Result AS String


WsMethod Retorna_String_TESTE Description "Retorna a String com o conteudo TESTE."
EndWsService

WsMethod Retorna_String_TESTE WsReceive InfoInicial WsSend Result WsService Retorna_String


::Result:="TESTE"

Return (.t.)

2) Fale para a aplicação .NET não exigir namespace algum, no caso de o WS Protheus também não ter namespace.

Isso, pelo que notei, é algo raro, mas se você pretende fazer com que sua aplicação rode em vários ambientes, é uma boa prática a adotar e evitar dores de cabeça futuras. A solução é simples, mas o problema que pode causar é inversamente proporcional.

Acabando com os bla, bla , blás, me despeço.

Abrazz
 
   


Comentários sobre o artigo

19/02/2011 por Orian

> la Amigo muito obrigado pelo post.

não enconteri como desativar a obrigatoriedade de namespaces no .NET,

porem gerei novamente o proxy usando a tool wsdl.exe com as seguintes configurações


wsdl.exe /nologo /verbose /namespace:Protheus.Services /out:C:\proxy /protocol:SOAP /language:CS
http://www.XXXXXXX.apw?wsdl

e deu certo tambem ..fica ai uma alternativa

muito abrigado mesmo ajudou demais.!!!

Poste um comentário >>
Nome  
Email
Comentário    
Postar Comentário