У меня есть веб-сервис, который вызывает функцию и создает продажу в ERP PRIMAVERA, она работает, если я вызываю ее последовательно, но если я вызываю ее одновременно, потому что ERP не поддерживает потоки и может создавать только одну за один раз. Веб-сервис зависает как системы, клиент и 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
``