Библиотека SAP NCO 3.0 выдает «AccessViolationException» при вызове RFCServer.Shutdown - PullRequest
0 голосов
/ 22 февраля 2019

У меня проблема с библиотекой SAP NCO 3.0 , но я не могу даже войти на их веб-сайт для публикации на своих форумах из-за ошибки сервера 500.

Проблема в том, что у меня настроен RFCServer для получения iDocs из системы SAP (<i>IDOC_INBOUND_ASYNCHRONOUS</i> для таблицы функций), который получает iDoc и выполняет некоторую обработку.

Когда сервер находится в процессе приема большого количества файлов и пользователь выключает RFCServer, библиотека SAP выдает <i>AccessViolationException</i>, вызывая сбой всего приложения.

Я пытался нарядить инкапсулированный метод Shutdown с атрибутом [HandleProcessCorruptedStateExceptions], но исключение все еще не обнаружено.

Код:

    public void Shutdown()
    {
        try
        {
            if (_SapServer != null)
            {
                _SapServer.Shutdown(false);
            }
        }
        catch (Exception e)
        {
            throw new Exception("Error stopping server", e);
        }

        if (_SapServer != null)
        {
            _SapServer.RfcServerError -= OnRfcServerError;
            _SapServer.RfcServerApplicationError -= OnRfcServerApplicationError;
            _SapServer.RfcServerStateChanged -= OnRfcServerStateChanged;
            _SapServer.TransactionIDHandler = null;
        }
    }

Я выключил Shutdown (true) для Shutdown (false), что говорит ему прервать выполнение вызовов.

Трассировка стека:

"Попытка чтения илипамять с защитой от записи. Это часто указывает на то, что другая память повреждена. "

на STRCV (байт *, символ *, Int32 *, Int32 *, Int32 *, Int32 *, Int32 *, Int32 *)
в SAP.Middleware.Connector.CpicConnection.CpicReceive (тайм-аут Int32)
в SAP.Middleware.Connector.RfcConnection.Accept (тайм-аут Int32)
в SAP.Middleware.Connector.RfcConnection.RfcServerWorkerjfConCon ()
в System.Threading.ExecutionContext.RunInternal (ExecutionContext executeContext, обратный вызов ContextCallback, состояние объекта, логическое preserveSyncCtx)
в System.Threading.ExecutionContext.Run (исполнительный вызов ExecutionContext, обратный вызов contextCallback, состояние объекта, логический preserveSyncCextEU.System.Threading.IThreadPoolWorkItem.ExecuteWorkItem ()

в System.Threading.ThreadPoolWorkQueue.Dispatch ()

в sapnco_utils.dll

Если кто-то может указать мнеправильное направление, так как я в основном зашел в тупик с этим.

...