функции ibmcloud, (openwhisk) .не удается подключиться к redis с помощью net core 3.1 Не удалось загрузить файл или сборку » System.IO.Pipelines

#.net-core #redis #ibm-cloud #serverless #openwhisk

Вопрос:

Я пытаюсь подключиться к базам данных IBM для экземпляра redis из функций ibmcloud в течение нескольких дней, но мне не повезло. Я попытался использовать поддерживаемую ibmcloud версию. netcore 2.2 и docker image core 3.1.

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

Мне нужна твоя помощь. Спасибо.

     public IbmRedisClient(JObject args)
    {
        X509Store store = new X509Store(StoreName.Root);
        var base64 = (string)args.GetValue("redis_connection_certbase64");
        string connURL = (string)args.GetValue("redis_connection_string");
        connURL = connURL.Replace("$PASSWORD", PASSWORD);
        Console.WriteLine("base: "   base64);
        X509Certificate2 ca  = new X509Certificate2(Convert.FromBase64String(base64));
        var EndPointCollection = new EndPointCollection();
        var options = new ConfigurationOptions
        {
            AbortOnConnectFail = false,
            Ssl = true,
            ConnectRetry = 3,
            ConnectTimeout = 5000,
            SyncTimeout = 5000,
            DefaultDatabase = 0,
            Password = "testadminpassword"
        };
        options.EndPoints.Add(host, 32326);
        options.EndPoints.Add(host, 0);

        options.CertificateSelection  = delegate
        {
            return ca;
        };
        try
        {
             ConnectionMultiplexer muxer = ConnectionMultiplexer.Connect(options);

             conn = muxer.GetDatabase();
        }
        catch (Exception ex)
        {
            Console.WriteLine("Root certificate import failed: "   ex.Message " " ex.ToString());
        }
        finally
        {
            store.Close();
        }

    }
 

Не удалось загрузить файл или сборку «System.IO.Pipelines, Версия=5.0.0.0, Культура=нейтральная, PublicKeyToken=cc7b13ffcd2ddd51». Не удалось найти или загрузить определенный файл. (0x80131621) Исключение System.IO.FileLoadException: Не удалось загрузить файл или сборку «System.IO.Конвейеры, Версия=5.0.0.0, Культура=нейтральная, PublicKeyToken=cc7b13ffcd2ddd51″. Не удалось найти или загрузить определенный файл. (0x80131621)»,
«2021-03-28T07:41:12.715551 Z stdout: Имя файла: ‘System.IO.Pipelines, Версия=5.0.0.0, Культура=нейтральная, PublicKeyToken=cc7b13ffcd2ddd51′»,
«2021-03-28T07:41:12.715557 з поток stdout: —> система.ИО.Fileloadexception: не удалось загрузить файл или сборку ‘System.ИО.Трубопроводы, версия=5.0.0.0, культура=нейтральных, PublicKeyToken=cc7b13ffcd2ddd51’.»,
«2021-03-28T07:41:12.715562 з стандартный вывод: в системе.Время выполнения.Погрузчик.AssemblyLoadContext.LoadFromPath(IntPtr ptrNativeAssemblyLoadContext, Строка ilPath, Строка niPath, Повторная сборка ObjectHandleOnStack)»,
«2021-03-28T07:41:12.715567 Z stdout: в System.Runtime.Погрузчик.AssemblyLoadContext.LoadFromAssemblyPath(строковый путь сборки)»,
«2021-03-28T07:41:12.715572 Z выход из строя: в системе.Отражение.Собрание.Загрузка из(файл сборки строки)»,
«2021-03-28T07:41:12.715576 Z выход из системы: в системе.Отражение.Собрание.LoadFromResolveHandler(отправитель объекта, аргументы ResolveEventArgs)»,
«2021-03-28T07:41:12.715581 Z stdout: в System.Runtime.Погрузчик.AssemblyLoadContext.InvokeResolveEvent(обработчик событий ResolveEventHandler, сборка сборки во время выполнения, строковое имя)»,
«2021-03-28T07:41:12.715586 Z stdout: в System.Runtime.Погрузчик.AssemblyLoadContext.OnAssemblyResolve(сборка сборки во время выполнения, строка assemblyFullName)»,
«2021-03-28T07:41:12.715590 Z выход из строя: на StackExchange.Редис.Мультиплексор соединений.Подключение(конфигурация параметров конфигурации, журнал текстового редактора)»,

Ответ №1:

Пожалуйста, попробуйте добавить <_FunctionsSkipCleanOutput>true</_FunctionsSkipCleanOutput> в свой файл проекта, еще не пробовал, но воспользуюсь решением, опубликованным здесь для аналогичной проблемы.

Комментарии:

1. Я уже пробовал это, но это не работает с облачными функциями ibm

Ответ №2:

Я решил проблему, понизив рейтинг StackExchange.Перейдите на версию, для которой не требуется зависимость от конвейеров.

Комментарии:

1. Если этот обходной путь сработал, то есть вероятность, что вы столкнулись с ошибкой, которую мы заметили во время выполнения dotnet, когда переходные зависимости не работали. Можете ли вы взглянуть и посмотреть, соответствует ли это тому, что вы испытали? github.com/apache/openwhisk-runtime-dotnet/issues/39