COMO CARREGAR MAIS DE UM METODO NO WEBSERVICE?

USUARIO.EXCLUIDOS 19/12/2006 14:46:08
#190920
Como faço para carregar varios metodos dentro da mesmas web reference?
USUARIO.EXCLUIDOS 19/12/2006 14:49:23
#190926
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...
MORDOR 19/12/2006 17:48:52
#191001
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.
USUARIO.EXCLUIDOS 19/12/2006 18:26:35
#191010
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()

USUARIO.EXCLUIDOS 19/12/2006 23:26:58
#191038
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...
MORDOR 20/12/2006 02:33:09
#191055
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.
USUARIO.EXCLUIDOS 20/12/2006 03:09:48
#191058
Ok, obrigado Mordor! Vou testar aki pra ver oq vai dar![S98]
USUARIO.EXCLUIDOS 21/12/2006 21:35:44
#191624
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!!
MORDOR 22/12/2006 00:26:08
#191638
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.
USUARIO.EXCLUIDOS 22/12/2006 00:43:18
#191639
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()
Tópico encerrado , respostas não são mais permitidas