SAP nco множественное соединение (с разными хостами) - PullRequest
0 голосов
/ 28 мая 2018

Для каждого сайта в одном порту необходимо подключиться к разным хостам сервера.При первом подключении проблем не возникает. Но при попытке зарегистрироваться (RegisterDestinationConfiguration) с другим именем пула соединений выдается исключение, целевая конфигурация уже инициализирована для ConnectionPoolName1, поэтому не может зарегистрироваться для ConnectionPoolName2.

function(){
if (SAPDestination == null)
                    {
                        SAPDestination = SAPConnection(ApplicationSite);
                        RfcSessionManager.BeginContext(SAPDestination);
                    }
                    rfcTravelfunc = SAPDestination.Repository.CreateFunction("FunctionName");
}
 private RfcDestination SAPConnection(SPSite ApplicationSite)
        {
            RfcDestination SAPConnect = null;
            try
            {
                DestinationConfig objConfig = new DestinationConfig();
                SAPConnect = objConfig.TryGetDestination(ConnectionPoolName); //If connection doesnt exist with this connection pool name returns null
                if (SAPConnect == null)
                {
                    DestinationConfig configObj = new DestinationConfig();
                    DestinationConfig.ApplicationSite = ApplicationSite;
                    RfcDestinationManager.RegisterDestinationConfiguration(configObj); //Throws exception when trying to register for new connection pool name
                    SAPConnect = RfcDestinationManager.GetDestination(ConnectionPoolName);
                }
            }
            catch (Exception ex)
            {

            }
            return SAPConnect;
        }

1 Ответ

0 голосов
/ 01 октября 2018

RfcDestinationManager.RegisterDestinationConfiguration() - глобальный статический метод.Вы можете зарегистрироваться только один раз.Он должен быть установлен в статическом контексте (например, в конструкторе статического класса), или вы можете использовать RfcDestinationManager.IsDestinationConfigurationRegistered(), чтобы проверить, если он уже зарегистрирован.Исключение выдается для предотвращения неправильного использования.

Объект регистрации должен реализовывать SAP.Middleware.Connector.IDestinationConfiguration.
У него есть метод RfcConfigParameters GetParameters(string destinationName); Это должно возвращать параметры соединения для запрошенного пункта назначения.

Этот способ следует использовать только в том случае, если вам нужно найти параметры подключения из внешнего хранилища.Более простой способ - сохранить параметры соединения в app.config / web.config (можно хранить несколько) и не использовать RfcDestinationManager.RegisterDestinationConfiguration().

Взято из учебного кода SAP NCo StepByStepClient.cs

.Net Connector 3.0 представляет новую концепцию, ориентированную на пункт назначения.Приложения работают с целевыми экземплярами, которые настраиваются по умолчанию в файле конфигурации приложения (app.config) или которые могут быть альтернативно определены путем явной регистрации объекта IDestinationConfiguration.Пункт назначения определяет бэкэнд, к которому могут быть открыты соединения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...