WEBSERVICE COM MYSQL

ARNALDOCRUZ 24/10/2011 21:22:16
#387631
Boa noite

colegas criei um webservice que faz algumas consultas em um banco de dados mysql hospedado em um provedor

na compiladção é criado --->>>WebSupersys.dll (webservice)

fiz a publicação blz.

no consumo, criei a dll [Ô]Conector.dll[Ô] com a referencia ao webservice do provedor, aparece todos os metodos certinho

Uma chamada ao webservice

Public Function AlteraAcesso(ByVal login As String, ByVal senha As String, ByVal CODEMP As String, ByVal CODSIST As String, ByVal ATIVO As String, ByVal MAQUINA As String, ByVal PRAZO As String) As String Implements IClasseNet.AlteraAcesso
Dim super As New WsuServico.WServico
AlteraAcesso = super.AlteraAcesso(login, senha, CODEMP)
End Function

No meu rojeto windows forms

Dim WServico As New Conector.ClsConection

chamada a dll de consumo

iretorno = WServico.AlteraAcesso(login,senha, Me.TextBox7.Text)

recebo a mensagem que a conexão com o provedor não foi permitida ou o firewall bloqueou o acesso.

Agora se eu retirar tudo da dll de consumo e adicionar a dll do webservice [Ô]WebSupersys.dll[Ô]

funciona só que pede o mysql.conector

esta logica tá certa

webservide rodando mysql no provedor(com referencias do mysql)
/
/
/
dll de consumo só pasando parametrose reebendo retorno
esta dll ficaria na pasta bin do meu aplicativo
/
/
/
meu aplicativo passando parametros e recebendo retorno da dll de consumo
sem precisa ter o mysql conector pois o mysql rodaria lá no provedor e não na minha maquina.











PROFESSOR 24/10/2011 22:16:58
#387636
Resposta escolhida
No lado cliente, então, voce criou uma referência ao serviço do WebService.
é normal que o aplicativo seja bloqueado pelo firewall, pois ele [Ô]quer se conectar[Ô] ao serviço, e ninguém liberou acesso para ele.

Aí você vai no Painel de Configurações, acessa o Firewall e libera o aplicativo, todas as portas e estações, internas á rede e externas permitidas. E o mesmo erro aparece.

Isso é porque o acesso também deverá ser liberado no site onde o webService é [Ô]pendurado[Ô]. Caso não o seja, apenas aplicativos [Ô]on line[Ô] no mesmo Domain é que terão esse direito ás consultas.

Há vários [Ô]posts[Ô] sobre o assunto na MS (veja este) e em vários fóruns.

Uma alternativa é Proxy. Mas como não é [Ô]receita de bolo[Ô], tem vários procedimentos, desde configurar o IIS, até esta á seguir, que é uma [Ô]possibilidade[Ô]. Por ela, você indica á instância do serviço que ela deverá utilizar as credenciais-padrão para o acesso:

  ...
Dim serviço As New MeuServiço()
serviço.PreAuthenticate = true
serviço.Credentials = System.Net.CredentialCache.DefaultCredentials
...


Você também pode utilizar as credenciais reais de acesso ao site, que são (nome e senha) as da conta que utiliza para acessar o FTP que utiliza para [Ô]subir[Ô] o site, assim como pode criar um tipo de [Ô]config[Ô], um XML específico para a liberação dos serviços entre domínios, o que é chamado de Cross-Domain, pois sua máquina - um domínio - vai acessar o serviço no site - outro domínio - e que alguns provedores proibem como regra. O modelo desse XML é como o abaixo:

<?xml version=[Ô]1.0[Ô] encoding=[Ô]utf-8[Ô]?>
<access-policy>
<cross-domain-access>
<policy>
<allow-from http-request-headers=[Ô]SOAPAction[Ô]>
<domain uri=[Ô]*[Ô]/>
</allow-from>
<grant-to>
<resource path=[Ô]/services/[Ô] include-subpaths=[Ô]true[Ô]/>
</grant-to>
</policy>
<policy >
<allow-from http-methods=[Ô]*[Ô]>
<domain uri=[Ô]www.contoso.com[Ô]/>
</allow-from>
<grant-to>
<resource path=[Ô]/services/[Ô] include-subpaths=[Ô]true[Ô]/>
</grant-to>
</policy>
</cross-domain-access>
</access-policy>


O pessoal do Flaaaaasssggrhsgagagagahhh! (perdão, do Flash) utiliza muito esse recurso. O nome desse arquivo deve ser (oras!) [Ô]crossdomain.xml[Ô]. Ele fica no raíz dos serviços, ou no raíz do próprio site, dependendo do que se deseja.

Tópico encerrado , respostas não são mais permitidas