У меня возникла проблема с загрузкой с веб-сайта Acumatica (пробная версия V5.2) всякий раз, когда код веб-API запускается для синхронизации данных, отображающих сообщение «Вы вышли из системы из-за превышения количества пользователей в системе». хотя я реализовал код выхода из веб-API.
Я не хотел бы загружаться с Acumatica и ранее задавал вопрос Как выйти из системы пользователя Acumatica Web Api?. Вот где я получил код для выхода. Но это определенно не работает правильно в моей пробной версии.
Поэтому я думаю, что с моим кодом что-то не так, и если это так, мне может понадобиться помощь в его выяснении.
Этапы репликации: перед запуском приведенного ниже примера кода войдите в пробную версию Acumatica. После запуска вы будете загружены из Acumatica, говоря, что вы превысили лимит двух пользователей.
Приведенный ниже пример кода просто входит в систему, ищет продавца по идентификатору, а затем выходит из системы. Делает это дважды.
Пример кода:
class Program
{
static AcumaticaApiWS.Screen context = null;
static string contextUrl = "http://localhost/Soap/WEBAPI.asmx";
static string screenUrl = "http://localhost/Soap/.asmx";
static string userName = "USERNAME";
static string passWord = "PASSWORD";
static void Main( string[] args )
{
LogIn();
DoWork("Test1");
LogOut();
LogIn();
DoWork("Test2");
LogOut();
}
static void LogIn()
{
Program.context = new AcumaticaApiWS.Screen();
Program.context.CookieContainer = new System.Net.CookieContainer();
Program.context.AllowAutoRedirect = true;
Program.context.EnableDecompression = true;
Program.context.Timeout = int.MaxValue;
Program.context.Url = Program.contextUrl;
AcumaticaApiWS.LoginResult result = context.Login( Program.userName, Program.passWord );
Program.context.SetLocaleName( System.Globalization.CultureInfo.CurrentCulture.Name );
}
static void LogOut()
{
AcumaticaScreenWS.Screen screen = new AcumaticaScreenWS.Screen();
Program.context.Url = Program.screenUrl;
screen.Url = Program.screenUrl;
screen.CookieContainer = Program.context.CookieContainer;
screen.Logout();
Program.context = null;
}
static void DoWork( string salesPersonId )
{
String[][] AR205000data = null;
AcumaticaApiWS.AR205000Content AR205000 = Program.context.AR205000GetSchema();
Program.context.AR205000Clear();
AR205000data = Program.context.AR205000Export
(
new AcumaticaApiWS.Command[]
{
AR205000.SalespersonInfo.ServiceCommands.EverySalespersonID,
AR205000.SalespersonInfo.SalespersonID,
AR205000.SalespersonInfo.Name
},
new AcumaticaApiWS.Filter[]
{
new AcumaticaApiWS.Filter
{
Field = new AcumaticaApiWS.Field() {
FieldName = AR205000.SalespersonInfo.SalespersonID.FieldName,
ObjectName = AR205000.SalespersonInfo.SalespersonID.ObjectName
},
Condition = AcumaticaApiWS.FilterCondition.Equals,
Value = salesPersonId
}
},
0, false, false
);
if( AR205000data.Length > 0 )
{
Console.WriteLine( AR205000data[0][0] + " " + AR205000data[0][1] );
}
else
{
Console.WriteLine( "'" + salesPersonId + "' not found." );
}
}
}
Спасибо за вашу помощь!