COMO CARREGAR MAIS DE UM METODO NO WEBSERVICE?
Como faço para carregar varios metodos dentro da mesmas web reference?
Segue meu código:
Cursor.Current = Cursors.WaitCursor
Dim server As New br.com.soccolbarbieri.www.serverwsRepresentantes
Dim dataset As New Data.DataSet("dataset")
Dim table As New Data.DataTable("table")
Dim sqlString
Dim i As Integer
Dim connection As Data.SqlServerCe.SqlCeConnection = New Data.SqlServerCe.SqlCeConnection("DataSource = \AFV\BdAFV\SoccolBd.sdf;")
connection.Open()
sqlString = "DELETE FROM wsRepresentante;"
Dim comandoLimpeza As New Data.SqlServerCe.SqlCeCommand(sqlString, connection)
comandoLimpeza.ExecuteNonQuery()
sqlString = "DELETE FROM wsProdCat;"
comandoLimpeza.ExecuteNonQuery()
i = 0
txBWs.Text = "Iniciando Sincronização de Bancos de Dados com a Empresa..."
Dim prodcat() As br.com.soccolbarbieri.www.ProdCat = server.listaProdCat()
i = 0
For Each listaProdCat As br.com.soccolbarbieri.www.ProdCat In prodcat
sqlString = "INSERT INTO wsProdCat ( Cod, Nome) VALUES ( ?, ? )"
Dim command As New Data.SqlServerCe.SqlCeCommand(sqlString, connection)
Dim row As Data.DataRow = table.NewRow()
command.Parameters.Add("@codigo", listaProdCat.codigo)
command.Parameters.Add("@nome", listaProdCat.nome)
txBWs.Text = String.Concat(txBWs.Text, vbCrLf + "Atualizados os Dados da " & i & " Categoria de Produtos:" & listaProdCat.nome)
command.ExecuteNonQuery()
i += 1
Next
i = 0
Dim representantes() As br.com.soccolbarbieri.www.Representantes = server.listarRepresentantes()
For Each representante As br.com.soccolbarbieri.www.Representantes In representantes
sqlString = "INSERT INTO wsRepresentante ( Cod, Nome, NmReduzido, Endereco, Bairro, Uf, Cep, Cpf, Fax, Fone, Email, Login, Senha ) VALUES ( ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ? )"
Dim command As New Data.SqlServerCe.SqlCeCommand(sqlString, connection)
Dim row As Data.DataRow = table.NewRow()
command.Parameters.Add("@codigo", representante.codigo)
command.Parameters.Add("@nome", representante.nome)
command.Parameters.Add("@nmReduz", representante.nmReduz)
command.Parameters.Add("@endereco", representante.endereco)
command.Parameters.Add("@bairro", representante.bairro)
command.Parameters.Add("@estado", representante.estado)
command.Parameters.Add("@cep", representante.cep)
command.Parameters.Add("@cgc", representante.cgc)
command.Parameters.Add("@fax", representante.fax)
command.Parameters.Add("@fone", representante.telefone)
command.Parameters.Add("@email", representante.email)
command.Parameters.Add("@login", representante.login)
command.Parameters.Add("@senha", representante.senha)
command.ExecuteNonQuery()
txBWs.Text = String.Concat(txBWs.Text, vbCrLf + "Atualizados os Dados indice " & i & " Cadastrando representante" & representante.login)
i += 1
Next
O erro acontece quando o sistema tenta declarar a variavel representantes...
Cursor.Current = Cursors.WaitCursor
Dim server As New br.com.soccolbarbieri.www.serverwsRepresentantes
Dim dataset As New Data.DataSet("dataset")
Dim table As New Data.DataTable("table")
Dim sqlString
Dim i As Integer
Dim connection As Data.SqlServerCe.SqlCeConnection = New Data.SqlServerCe.SqlCeConnection("DataSource = \AFV\BdAFV\SoccolBd.sdf;")
connection.Open()
sqlString = "DELETE FROM wsRepresentante;"
Dim comandoLimpeza As New Data.SqlServerCe.SqlCeCommand(sqlString, connection)
comandoLimpeza.ExecuteNonQuery()
sqlString = "DELETE FROM wsProdCat;"
comandoLimpeza.ExecuteNonQuery()
i = 0
txBWs.Text = "Iniciando Sincronização de Bancos de Dados com a Empresa..."
Dim prodcat() As br.com.soccolbarbieri.www.ProdCat = server.listaProdCat()
i = 0
For Each listaProdCat As br.com.soccolbarbieri.www.ProdCat In prodcat
sqlString = "INSERT INTO wsProdCat ( Cod, Nome) VALUES ( ?, ? )"
Dim command As New Data.SqlServerCe.SqlCeCommand(sqlString, connection)
Dim row As Data.DataRow = table.NewRow()
command.Parameters.Add("@codigo", listaProdCat.codigo)
command.Parameters.Add("@nome", listaProdCat.nome)
txBWs.Text = String.Concat(txBWs.Text, vbCrLf + "Atualizados os Dados da " & i & " Categoria de Produtos:" & listaProdCat.nome)
command.ExecuteNonQuery()
i += 1
Next
i = 0
Dim representantes() As br.com.soccolbarbieri.www.Representantes = server.listarRepresentantes()
For Each representante As br.com.soccolbarbieri.www.Representantes In representantes
sqlString = "INSERT INTO wsRepresentante ( Cod, Nome, NmReduzido, Endereco, Bairro, Uf, Cep, Cpf, Fax, Fone, Email, Login, Senha ) VALUES ( ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ? )"
Dim command As New Data.SqlServerCe.SqlCeCommand(sqlString, connection)
Dim row As Data.DataRow = table.NewRow()
command.Parameters.Add("@codigo", representante.codigo)
command.Parameters.Add("@nome", representante.nome)
command.Parameters.Add("@nmReduz", representante.nmReduz)
command.Parameters.Add("@endereco", representante.endereco)
command.Parameters.Add("@bairro", representante.bairro)
command.Parameters.Add("@estado", representante.estado)
command.Parameters.Add("@cep", representante.cep)
command.Parameters.Add("@cgc", representante.cgc)
command.Parameters.Add("@fax", representante.fax)
command.Parameters.Add("@fone", representante.telefone)
command.Parameters.Add("@email", representante.email)
command.Parameters.Add("@login", representante.login)
command.Parameters.Add("@senha", representante.senha)
command.ExecuteNonQuery()
txBWs.Text = String.Concat(txBWs.Text, vbCrLf + "Atualizados os Dados indice " & i & " Cadastrando representante" & representante.login)
i += 1
Next
O erro acontece quando o sistema tenta declarar a variavel representantes...
Qual erro dá? Aqui rodou sem erros. Verifique se há alterações no WebService, clique na opção "Update Web Reference" na referência "br.com.soccolbarbieri.www" no Solution Explorer.
System.Net.WebException was unhandled
Message="Não é possÃvel exibir uma mensagem de erro porque não foi possÃvel encontrar o conjunto de módulos (assembly) de recursos opcional"
StackTrace:
em System.Net.HttpWebRequest.finishGetResponse()
em System.Net.HttpWebRequest.GetResponse()
em System.Web.Services.Protocols.WebClientProtocol.GetWebResponse()
em System.Web.Services.Protocols.HttpWebClientProtocol.GetWebResponse()
em System.Web.Services.Protocols.SoapHttpClientProtocol.doInvoke()
em System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke()
em AFVScb.br.com.soccolbarbieri.www.serverwsRepresentantes.listarRepresentantes()
em AFVScb.FormAtualiza.Button1_Click()
em System.Windows.Forms.Control.OnClick()
em System.Windows.Forms.Button.OnClick()
em System.Windows.Forms.ButtonBase.WnProc()
em System.Windows.Forms.Control._InternalWnProc()
em Microsoft.AGL.Forms.EVL.EnterMainLoop()
em System.Windows.Forms.Application.Run()
em AFVScb.Form2.Main()
Message="Não é possÃvel exibir uma mensagem de erro porque não foi possÃvel encontrar o conjunto de módulos (assembly) de recursos opcional"
StackTrace:
em System.Net.HttpWebRequest.finishGetResponse()
em System.Net.HttpWebRequest.GetResponse()
em System.Web.Services.Protocols.WebClientProtocol.GetWebResponse()
em System.Web.Services.Protocols.HttpWebClientProtocol.GetWebResponse()
em System.Web.Services.Protocols.SoapHttpClientProtocol.doInvoke()
em System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke()
em AFVScb.br.com.soccolbarbieri.www.serverwsRepresentantes.listarRepresentantes()
em AFVScb.FormAtualiza.Button1_Click()
em System.Windows.Forms.Control.OnClick()
em System.Windows.Forms.Button.OnClick()
em System.Windows.Forms.ButtonBase.WnProc()
em System.Windows.Forms.Control._InternalWnProc()
em Microsoft.AGL.Forms.EVL.EnterMainLoop()
em System.Windows.Forms.Application.Run()
em AFVScb.Form2.Main()
Amigos vbmanÃacos, alguns avanços...
Quando coloco o Visual Studio com vários Breakpoint e espero tipo, uns 30 segundos entre uma requisição e outra... ele funciona normal... [S51]
Quando coloco o breakpoint e não espero esses segundos, ocorre o mesmo erro que citei acima...
E quando busca pela exception no google, o segundo resultado que aparece pra mim é o endereço: http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=1029872&SiteID=1
onde pelo que entendi eles dizem pra ligar o emulador via activesync e que funcionou, mas o problema é que estou testando o software direto no equipamento e o mesmo erro ocorre quando conectado via active sync ou linha telefà 'nica...
as questões que tenho agora são...
existe algum método para "limpar" o resultado dos webservices anteriores após gravar-los em bancos de dados, algo como um "flush()"
acho que não ficaria nada bonito, mas... no caso de aumentar o tempo de sincronização alguém conhece algum comando para parar a execução do programa por 30 segundos entre cada atualização??
seria isto um bug do mecanismo de web-services do VB?? :-(
agradeço muito qualquer ajuda...
Quando coloco o Visual Studio com vários Breakpoint e espero tipo, uns 30 segundos entre uma requisição e outra... ele funciona normal... [S51]
Quando coloco o breakpoint e não espero esses segundos, ocorre o mesmo erro que citei acima...
E quando busca pela exception no google, o segundo resultado que aparece pra mim é o endereço: http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=1029872&SiteID=1
onde pelo que entendi eles dizem pra ligar o emulador via activesync e que funcionou, mas o problema é que estou testando o software direto no equipamento e o mesmo erro ocorre quando conectado via active sync ou linha telefà 'nica...
as questões que tenho agora são...
existe algum método para "limpar" o resultado dos webservices anteriores após gravar-los em bancos de dados, algo como um "flush()"
acho que não ficaria nada bonito, mas... no caso de aumentar o tempo de sincronização alguém conhece algum comando para parar a execução do programa por 30 segundos entre cada atualização??
seria isto um bug do mecanismo de web-services do VB?? :-(
agradeço muito qualquer ajuda...
SHAMANABEL você tem razão, o código estava dando erro mesmo. Consegui resolver utilizando métodos assÃncronos. Veja o exemplo que fiz em anexo.
Ok, obrigado Mordor! Vou testar aki pra ver oq vai dar![S98]
Olá Mordor, não consegui rodar direto seu projeto acredito que por incompatibilidade entre nossos emuladores, mas nas adaptações que fiz no meu usando o seu método agora ele começou a dar problema no resultado EndInvoke , sempre da segunda função, coloquei os métodos para serem chamados individualmente por meio de botões separados, quando invocado o primeiro ok, mas quando é chamado o segundo, o problema acontece no mesmo local que quando chamadas as duas funções simultaneamente, tentei também usar o comando:
ar.AsyncWaitHandle.WaitOne()
assim como o Debug.Assert(server.listaSubProdCat.SyncRoot) , e nenhum deles surtiu o efeito que espero, as malditas threads andando uma atrás da outra, quando uma termina a outra começa, ou então até então que saiam todas juntas, mas que uma acabe por vez, não uma antes de outra como está acontecendo, será que é tão difÃcil trabalhar com webservices pra todo mundo ou eu que sou muito burro mesmo?? ehhehe [S52][S54]
de qualquer forma, abri um outro tópico com o titulo WEBSERVICES, ajudando aqui ou lá agradecerei muito!!
ar.AsyncWaitHandle.WaitOne()
assim como o Debug.Assert(server.listaSubProdCat.SyncRoot) , e nenhum deles surtiu o efeito que espero, as malditas threads andando uma atrás da outra, quando uma termina a outra começa, ou então até então que saiam todas juntas, mas que uma acabe por vez, não uma antes de outra como está acontecendo, será que é tão difÃcil trabalhar com webservices pra todo mundo ou eu que sou muito burro mesmo?? ehhehe [S52][S54]
de qualquer forma, abri um outro tópico com o titulo WEBSERVICES, ajudando aqui ou lá agradecerei muito!!
Olá! Andei mexendo no projeto, e este que mandei está funcionando OK, mas então vi o seu último post e está gerando a mesma Exception quando adicionado mais uma requisição ao WS (total de 3). Engraçado que hora funciona outra não. Sinceramente não estou entendendo o porquê disso, a mensagem de erro é muito pouco esclarecedora. Vi vários exemplos de Web Services rodando de forma assÃncrona e não há nenhuma observação sobre possÃveis problemas. Também usei o método WaitOne pra ver se esperando a conclusão de cada Thread o problema desapareceria, mas nada. Vou continuar procurando qualquer coisa te dou um toque. Se conseguir aà me avisa por favor.
O erro acontecia mesmo usando 2 funções. Tentamos usar
Try
Dim server As serverwsRepresentantes = CType(arX.AsyncState, serverwsRepresentantes)
Debug.Assert(server.listarRepresentantes.SyncRoot)
Dim waithandles() As WaitHandle = {arX.AsyncWaitHandle}
arX.AsyncWaitHandle.WaitOne(tempoDefault, False)
representantes = server.EndlistarRepresentantes(arX)
Catch ex As System.Exception
MsgBox("Erro no recebimento de dados de representantes, tentando novamente...")
End Try
operacao1Concluida = True
Cursor.Current = Cursors.Default
AtualizaDados()
Try
Dim server As serverwsRepresentantes = CType(arX.AsyncState, serverwsRepresentantes)
Debug.Assert(server.listarRepresentantes.SyncRoot)
Dim waithandles() As WaitHandle = {arX.AsyncWaitHandle}
arX.AsyncWaitHandle.WaitOne(tempoDefault, False)
representantes = server.EndlistarRepresentantes(arX)
Catch ex As System.Exception
MsgBox("Erro no recebimento de dados de representantes, tentando novamente...")
End Try
operacao1Concluida = True
Cursor.Current = Cursors.Default
AtualizaDados()
Tópico encerrado , respostas não são mais permitidas