2014-09-10 2 views
4

Я пытаюсь выполнить некоторую базовую интеграцию, используя веб-службы 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, поэтому он получает адрес конечной точки и другие детали.

Есть ли что-то, что мне не хватает или что-то не так?

ответ

0

Как уже отмечалось выше, я смог связаться с представителем Acumatica. Он заставил меня удалить, а затем воссоздать ссылки на службы в нашем проекте и повторить попытку. По-видимому, этот трюк и «Ошибка № 185: вы не вошли в систему», ошибка исчезла.

3

Как я вижу, вы используете WCF для создания своей справочной службы. Таким образом, вы должны включить куки в службу связывания:

var binding = new BasicHttpBinding() 
{ 
    AllowCookies = true 
}; 

var address = new EndpointAddress("http://localhost/WebAPIVirtual/Soap/APITEST.asmx"); 

var c = new ServiceReference1.ScreenSoapClient(binding, address); 

Или, вы можете использовать старые ASMX ссылки веб-службы (http://msdn.microsoft.com/en-us/library/bb628649.aspx). Тогда все будет таким же, как в документации Acumatica.

+0

Спасибо, Андрей. После работы с кем-то из Acumatica мы обнаружили удаление, а затем воссоздание ссылок на службы в нашем проекте устраняло проблемы. Не совсем понятно, почему, но это сделал трюк! – rheldt

+0

Разрешение куки работало для меня. – Anth12

Смежные вопросы