Я пытаюсь выполнить некоторую базовую интеграцию, используя веб-службы Acumatica. . Unfortunatly, у меня возникли проблемы при входе в соответствии с их документацией, этот процесс должен выглядеть примерно так:API веб-служб Acumatica Login
apitest.Screen context = new apitest.Screen();
context.CookieContainer = new System.Net.CookieContainer();
context.AllowAutoRedirect = true;
context.EnableDecompression = true;
context.Timeout = 1000000;
context.Url = "http://localhost/WebAPIVirtual/Soap/APITEST.asmx";
LoginResult result = context.Login("admin", "E618");
достаточно просто. Однако после создания и импорта файла WSDL из Acumatica в Visual Studio я обнаружил, что у меня нет объекта Screen. Однако у меня есть объект ScreenSoapClient, который имеет аналогичный метод Login().
ScreenSoapClient context = new Acumatica.ScreenSoapClient("ScreenSoap");
LoginResult result = context.Login("username", "password");
Эта часть работает. Фактически, LoginResult дает мне идентификатор сеанса. Однако, если я пытаюсь делать вызовы к службе, например:
CR401000Content cr401000 = context.CR401000GetSchema();
Я получаю сообщение об ошибке: System.Web.Services.Protocols.SoapException: Сервер не смог обработать запрос. ---> PX.Data.PXNotLoggedInException: Ошибка # 185: Вы еще не вошли в систему.
Хотя версия Acumatica, которую мы используем, выглядит немного более новой, я не уверен, почему экран () объект недоступен. Следовательно, если я попробую плохое имя пользователя/пароль, Login() не сработает (как следует). Из того, что я могу сказать, класс ScreenSoapClient использует данные модели сервиса из web.config, поэтому он получает адрес конечной точки и другие детали.
Есть ли что-то, что мне не хватает или что-то не так?
Спасибо, Андрей. После работы с кем-то из Acumatica мы обнаружили удаление, а затем воссоздание ссылок на службы в нашем проекте устраняло проблемы. Не совсем понятно, почему, но это сделал трюк! – rheldt
Разрешение куки работало для меня. – Anth12