Утешение с помощью .NET API ожидает блокировки контекста на этапе подключения - PullRequest
0 голосов
/ 10 января 2019

это временная проблема большую часть времени, когда я не могу подключиться к любому VMR с помощью Solace .NET API.

После завершения настройки API Context и ContextFactory я вызываю метод Connect, при котором выполнение останавливается, и метод LogDelegate вызывается с сообщением о явной тупиковой ситуации навсегда.

Уведомление - SDK: 01:31:15 | solClientCondition.c: 376 (00008538) solClient_session_connect для контекста 0, истекло время ожидания ожидания завершения контекста cmd | нуль

        public void Start()
        {
            //Initialize properties from command line
            var contextProps = new ContextProperties();
            var sessionProps = new SessionProperties();

            sessionProps.Host = MachineName;
            sessionProps.VPNName = VpnName;
            sessionProps.UserName = User;
            sessionProps.Password = Password;

            // Solace Logger
            var contextFactoryProperties = new ContextFactoryProperties();
            contextFactoryProperties.SolClientLogLevel = SolLogLevel.Warning;
            contextFactoryProperties.LogDelegate += LogSolaceProcess;

            ContextFactory.Instance.Init(contextFactoryProperties);

            //Initialize Context
            _context = ContextFactory.Instance.CreateContext(contextProps, null);

            //Create and connect Session
            _session = _context.CreateSession(sessionProps, null, HandleSentMessages);
            ReturnCode returnCode = _session.Connect();

            if (returnCode != ReturnCode.SOLCLIENT_OK)
            {
                throw new InvalidOperationException("Unable to connect with the VMR.");
            }
        }

        private void LogSolaceProcess(SolLogInfo logInfo)
        {
            //Log
        }

Я не думаю, что это проблема, связанная с сетью, потому что я создал виртуальную машину и маршрутизировал свои соединения через нее, и то же самое произошло. Код на виртуальной машине работает без проблем.

Я подтвердил, что брандмауэр компьютера выключен, и я попытался подключиться к 2 различным VMR, расположенным в разных сегментах сети, и я всегда получаю одно и то же.

Проверка установленного списка соединений на компьютере, соединение с запрошенными хостами не показывается, поэтому я думаю, что сокет не был открыт к тому времени, когда приходит ожидающее сообщение.

Я также пытался подключиться к этим же VMR с помощью инструмента .NET SDKPerf , все то же самое, но с использованием C версии SDKPerf это не связано ни с чем.

Кто-нибудь сталкивался с такой проблемой?

Заранее спасибо

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