【发布时间】:2019-10-23 18:24:52
【问题描述】:
我有一个调用函数并在 ERP PRIMAVERA 中创建销售的 Web 服务,如果我按顺序调用它确实有效,但如果我同时调用它,因为 ERP 不支持线程并且一次只能创建一个,Web 服务同时挂起系统、客户端和 ERP。我不知道如何解决这个问题。 我该怎么办?
我试图在日志表中创建一个记录调用状态的列,但由于时间差异以毫秒为单位,因此数据库中的写入给了我 2 个具有相同状态的调用,因此挂起系统。
<WebMethod()>
Public Function InsereVenda(ByVal id As String, ByVal xml As String) As String
Dim ObjResp As New ObjResposta
Try
ObjResp = RetornaObjRespostaDocs("InsereVenda", id, xml)
Return ObjResp.XMLResposta
Catch ex As Exception
If ex.Message = "" Then
Return "Erro"
Else
Return ObjResp.XMLResposta
End If
End Try
End Function
End Class
Public Class Pedido
Inherits System.Web.Services.WebService
Private Function RetornaObjRespostaDocs(ByVal metodo As String, ByVal id As String, ByVal xml As String) As ObjResposta
Dim msg As String = ""
Dim servWeb As ServicosWeb
Dim lista As DataTable
RetornaObjRespostaDocs = New ObjResposta
servWeb = New ServicosWeb(My.Settings.Username, My.Settings.Password, My.Settings.Empresa, My.Settings.TipoEmpresa)
Try
RetornaObjRespostaDocs.ID = id
RetornaObjRespostaDocs.XML = xml
RetornaObjRespostaDocs.DataProc = Now
RetornaObjRespostaDocs.TipoMsg = metodo
'While 1 < 2
'
Thread.Sleep(1000)
servWeb.GuardarRegistoTabelaLOGWebService(id, "", RetornaObjRespostaDocs.TipoMsg,
RetornaObjRespostaDocs.DataProc, RetornaObjRespostaDocs.XML, "", "0", "R")
Thread.Sleep(1000)
lista = servWeb.ConsultaSQLDatatable("select CDU_Estado from TDU_LogWebService WITH (NOLOCK) where CDU_Estado = 'R'")
If lista.Rows.Count <=0 Then
servWeb.InsereVenda(xml, RetornaObjRespostaDocs)
servWeb.GuardarRegistoTabelaLOGWebService(RetornaObjRespostaDocs.ID, RetornaObjRespostaDocs.Mensagem, RetornaObjRespostaDocs.TipoMsg,
RetornaObjRespostaDocs.DataProc, RetornaObjRespostaDocs.XML, RetornaObjRespostaDocs.XMLResposta, RetornaObjRespostaDocs.Sucesso, "G")
Else
Thread.Sleep(1000)
End If
'End While
Return RetornaObjRespostaDocs
Catch ex As Exception
servWeb.GuardarRegistoTabelaLOGWebService(RetornaObjRespostaDocs.ID, RetornaObjRespostaDocs.Mensagem, RetornaObjRespostaDocs.TipoMsg,
RetornaObjRespostaDocs.DataProc, RetornaObjRespostaDocs.XML, RetornaObjRespostaDocs.XMLResposta, RetornaObjRespostaDocs.Sucesso, "G")
Return RetornaObjRespostaDocs
End Try
End Function
``
【问题讨论】:
-
我认为我无法帮助您解决这个问题,但我认为如果您将变量/函数名称翻译成英文和/或在代码中编写 cmets,它会极大地增加其他人可能会做出的改变。另一种选择是在portugese StackOverflow 上发帖
标签: .net vb.net web-services