Вход в несколько экземпляров Acumatica - PullRequest
2 голосов
/ 19 июня 2020

У меня есть разрабатываемая версия Acumatica, работающая локально, и версия QA Acumatica в облаке.

Я написал программу c#, интегрирующуюся с Acumatica через SOAP. Я создал файл WSDL для экземпляра Acumatica, работающего локально по адресу http://localhost/AcumaticaERP. Теперь мне нужно заставить программу подключаться к производственному экземпляру Acumatica в облаке. Метод soapClient.Login не имеет URL-адреса Acumatica в качестве параметра.

Как мне разрешить пользователям динамически выбирать экземпляр Acumatica для использования из моей программы?

1 Ответ

1 голос
/ 20 июня 2020

Я бы сначала предложил изучить REST API, поскольку обычно это рекомендуемый интеграционный API.

Что касается динамического изменения конечной точки (например, экземпляра Acumatica), обратите внимание, что DefaultSoapClient имеет несколько перегруженных конструкторов . Есть тот, где вы можете указать endpointConfigurationName (см. Ниже). Это будет означать, что ваш URL-адрес должен быть в вашем web.config / appsettings клиентского приложения, как более подробно описано здесь: https://help-2020r1.acumatica.com/ (W (1)) / Help? ScreenId = ShowWiki & pageid = 37613e5f-7a72-4de c -b5d9-2525951e99cf

public partial class DefaultSoapClient : System.ServiceModel.ClientBase<ConsoleApp2.ServiceReference1.DefaultSoap>, ConsoleApp2.ServiceReference1.DefaultSoap {

        public DefaultSoapClient() {
        }

        public DefaultSoapClient(string endpointConfigurationName) : 
                base(endpointConfigurationName) {
        }

        public DefaultSoapClient(string endpointConfigurationName, string remoteAddress) : 
                base(endpointConfigurationName, remoteAddress) {
        }

        public DefaultSoapClient(string endpointConfigurationName, System.ServiceModel.EndpointAddress remoteAddress) : 
                base(endpointConfigurationName, remoteAddress) {
        }

        public DefaultSoapClient(System.ServiceModel.Channels.Binding binding, System.ServiceModel.EndpointAddress remoteAddress) : 
                base(binding, remoteAddress) {
        }

В случае, если использование файлов конфигурации не подходит для вас, вы можете обратиться к этому примеру, в котором это делается программно: https://asiablog.acumatica.com/2019/01/dynamic-api-endpoint-url.html

...