Usuário com melhor resposta
The remote server returned an error: NotFound + WebService + Silverlight (Base em ambiente externo ao da aplicação)

Pergunta
-
Tenho uma estrutura da aplicação assim:
1 - FrontEnd Silverlight (locaweb)
2 - SGBD PostgreSQL (servidor, Hardware, externo à Locaweb)Estou fazendo um simples Select de login que retorna apenas um registro para identificar se o usuário/senha informado estão corretos e está gerando este erro, o que pode ser? Meu arquivo ServiceReference está assim:
No web.config dos webservices tenho esta linha também, <httpRuntime executionTimeout="600" enable="true" maxRequestLength="16384"/><binding name="wsUsuarioSoap" maxBufferSize="2147483647" closeTimeout="00:30:00" openTimeout="00:30:00" maxReceivedMessageSize="2147483647"> <security mode="None"> <transport> <extendedProtectionPolicy policyEnforcement="Never" /> </transport> </security> </binding>
Abaixo detalhe do retorno do erro.
The remote server returned an error: NotFound
System.ServiceModel.CommunicationException was unhandled by user code
Message=The remote server returned an error: NotFound.
StackTrace:
em System.ServiceModel.AsyncResult.End[TAsyncResult](IAsyncResult result)
em System.ServiceModel.Channels.ServiceChannel.EndCall(String action, Object[] outs, IAsyncResult result)
em System.ServiceModel.ClientBase`1.ChannelBase`1.EndInvoke(String methodName, Object[] args, IAsyncResult result)
em AdvogawebWCF.wsUsuario.wsUsuarioSoapClient.wsUsuarioSoapClientChannel.Endlogar(IAsyncResult result)
em AdvogawebWCF.wsUsuario.wsUsuarioSoapClient.AdvogawebWCF.wsUsuario.wsUsuarioSoap.Endlogar(IAsyncResult result)
em AdvogawebWCF.wsUsuario.wsUsuarioSoapClient.Endlogar(IAsyncResult result)
em AdvogawebWCF.wsUsuario.wsUsuarioSoapClient.OnEndlogar(IAsyncResult result)
em System.ServiceModel.ClientBase`1.OnAsyncCallCompleted(IAsyncResult result)
InnerException: System.Net.WebException
Message=The remote server returned an error: NotFound.
StackTrace:
em System.Net.Browser.AsyncHelper.BeginOnUI(SendOrPostCallback beginMethod, Object state)
em System.Net.Browser.BrowserHttpWebRequest.EndGetResponse(IAsyncResult asyncResult)
em System.ServiceModel.Channels.HttpChannelFactory.HttpRequestChannel.HttpChannelAsyncRequest.CompleteGetResponse(IAsyncResult result)
InnerException: System.Net.WebException
Message=The remote server returned an error: NotFound.
StackTrace:
em System.Net.Browser.BrowserHttpWebRequest.InternalEndGetResponse(IAsyncResult asyncResult)
em System.Net.Browser.BrowserHttpWebRequest.<>c__DisplayClass5.<EndGetResponse>b__4(Object sendState)
em System.Net.Browser.AsyncHelper.<>c__DisplayClass4.<BeginOnUI>b__1(Object sendState)
InnerException:
Já fiz as alterações indicadas nesta thread e nada. http://social.msdn.microsoft.com/forums/pt-br/silverlightpt/thread/3EA6286C-D23A-4672-9243-3E4D98F83F36
Guilherme Carvalho
Respostas
-
Eu não uso WCF. Mas estou desconfiado que seja problema de configuração no arquivo pg_hba do banco de dados no cliente, pois estou recebendo a mensagem de retorno do PostgreSQL:
codigo 28000 mensagem fatal: 28000: autenticação do tipo password falhou para usuário "xxxxxx" detalhe comando sql.
Guilherme Carvalho- Marcado como Resposta Guilherme Carvalho segunda-feira, 29 de agosto de 2011 11:08
Todas as Respostas
-
-
Guilherme bom dia.
Bom pelo que entendi você esta utilizando WCF para consultar o valor no banco, faça as seguintes verificações:
* Seu endereço de EndPoint no Client esta configurado corretamente, tente chamar direto no Browser seu endereço do web-services ou tente acessar via WCFTestClient;
* Você esta utilizando WSHttpBinding ou BasicHttpBinding, caso seja WSHttpBinding troque por BasicHttpBinding ou CustomBinding. O Silverlight não suporta WshttpBinding, veja o Link : http://msdn.microsoft.com/en-us/library/cc896571(v=VS.95).aspx
* Outra coisa que pode estar causando problema é esta configuração: <extendedProtectionPolicy policyEnforcement="Never" />. (Remova do webconfig)
Espero ter ajudado.
-
-
-
Creio que o "problema" seja o tempo de resposta, porque verifiquei que na rota são perdidos pacotes quando executo um tracert. Se eu apontar para uma base na locaweb mesmo não gera o erro e a aplicação funciona normalmente.
Guilherme Carvalho -
-
-
-
Olá, Guilherme
Como ninguem mencionou isso , gostaria de lhe dar uma sugestão , não sei se você já tentou colocar os arquivos de clientacesspolicy.xml e crossdomain.xml de acordo com seu tipo de rede e conexão veja http://msdn.microsoft.com/en-us/library/cc197955(VS.95).aspx entenda melhor http://msdn.microsoft.com/en-us/library/cc838250(v=vs.95).aspx e sobre tipos de restrições http://msdn.microsoft.com/en-us/library/cc645032(VS.95).aspx .
Espero ter ajudado.
Américo Arvani
MCP Frw web 2.0 / MCPD (Enterprise Application Developer) Frw web/win/wcf 3.5
Se ajudou , marque como resposta.
http://americoarvani.blogspot.com
-
O meu arquivo clientaccessplicy está assim: <access-policy> <cross-domain-access> <policy> <allow-from http-request-headers="*"> <domain uri="*" /> </allow-from> <grant-to> <resource path="/" include-subpaths="true" /> </grant-to> </policy> </cross-domain-access> </access-policy>
Entretanto meu problema é apenas a comunicação entre o serviço e o banco, tanto que como expliquei acima, se colocar a base de dados na mesma estrutura (Locaweb) o problema não ocorre, ou seja ao mudar apenas a base de lugar o problema aparece.
Guilherme Carvalho
-
Guilherme boa tarde.
Deixa ver se eu entendi. Se você rodar toda sua aplicação dentro do ambiente da localweb funciona sem problema nenhum, entrentanto se você colocar a base em outro lugar fora da localweb o sistema apresenta erro, é isso? Sua comunicação entre o banco e o aplicação cliente esta sendo realizada via WCF, correto?
Quando você coloca o banco para o servidor fora da localweb você coloca em conjunto os serviços do WCF, correto? Desta forma sua estrutura ficaria assimServidor 1 - Banco + Serviços WCF - (Fora LocalWeb)
Servidor 2 - Aplicação Silverlight - (Dentro LocalWeb).
?
-
-
Guilherme boa noite.
Qual a forma de comunicação que você esta utilizando entre o banco e a aplicação silverlight, pois se o web-services esta dentro do servidor da localweb e o banco esta fora da localweb, este web-service não vai conseguir enxergar este banco, a não ser que exista um link dedicado realilzando a comunicação entre esses dois servidores.Agora se você estiver tentando acessar os dados do banco com o web-services, e estes servidores não fazem parte da mesma rede, você vai ter que transferir seu web-services para o servidor onde esta o banco de dados.
-
-
Bom então vamos por etapa.
O sistema apresenta alguma mensagem de erro?Tente ativar alguma forma de gerar log através das Exceptions, com o bloco (Try/Catch);
Você pode utilizar o Fiddler essa é uma ferramenta gratuíta de proxy que coleta todas as informações que passam pelo browser.
Entretanto isso esta parecendo falha na conexão com o banco, você pode testar isso com ODBC, na maquina onde esta o Web-Services crie uma nova conexão via ODBC apontando para o banco que esta fora da localweb com o mesmo usuário e senha utilizados pelo web-services, no final da configuração o ODBC pede para testar a conexão.
-
Bom Dia,
Guilherme.
Já tentou habilitar o trace do WCF na sua aplicação com ele você vai ter o real retorno do seu WCF muito alem do "The remote server returned an error: NotFound.", nesse link http://www.israelaece.com/post/WCF-Tracing.aspx tem post de como fazer isso.
segue a configuração pronta.
att.<system.diagnostics> <sources> <source name="System.ServiceModel.MessageLogging" switchValue="All"> <listeners> <add name="xml" type="System.Diagnostics.XmlWriterTraceListener" initializeData="wcf_scart.svclog" /> </listeners> </source> </sources> <trace autoflush="true" /> </system.diagnostics> <system.serviceModel> <diagnostics> <messageLogging logEntireMessage="true" maxMessagesToLog="300" logMessagesAtServiceLevel="false" logMalformedMessages="true" logMessagesAtTransportLevel="true"/> </diagnostics> </system.serviceModel>
- Marcado como Resposta Guilherme Carvalho segunda-feira, 29 de agosto de 2011 11:07
- Não Marcado como Resposta Guilherme Carvalho segunda-feira, 29 de agosto de 2011 11:07
-
Eu não uso WCF. Mas estou desconfiado que seja problema de configuração no arquivo pg_hba do banco de dados no cliente, pois estou recebendo a mensagem de retorno do PostgreSQL:
codigo 28000 mensagem fatal: 28000: autenticação do tipo password falhou para usuário "xxxxxx" detalhe comando sql.
Guilherme Carvalho- Marcado como Resposta Guilherme Carvalho segunda-feira, 29 de agosto de 2011 11:08
-