Funciones de ibmcloud, (openwhisk). No puedo conectarme a redis usando net core 3.1. No se pudo cargar el archivo o el ensamblaj

CorePress2024-01-25  9

Estoy intentando conectarme a las bases de datos de IBM para la instancia de Redis desde las funciones de ibmcloud durante días, pero no tuve suerte. Intenté usar la versión compatible con ibmcloud .netcore 2.2 y docker image core 3.1.

Puedo conectarme a Redis sin ningún error desde una aplicación de consola local usando el siguiente código.

Necesito tu ayuda. Gracias.

    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();
        }

    }

No se pudo cargar el archivo o ensamblado 'System.IO.Pipelines, Version=5.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51'. No se pudo encontrar ni cargar un archivo específico. (0x80131621) System.IO.FileLoadException: no se pudo cargar el archivo o ensamblado 'System.IO.Pipelines, Version=5.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51'. No se pudo encontrar ni cargar un archivo específico. (0x80131621)", "2021-03-28T07:41:12.715551Z stdout: Nombre de archivo: 'System.IO.Pipelines, Versión=5.0.0.0, Cultura=neutral, PublicKeyToken=cc7b13ffcd2ddd51'", "2021-03-28T07:41:12.715557Z salida estándar: ---> System.IO.FileLoadException: No se pudo cargar el archivo o ensamblado 'System.IO.Pipelines, Version=5.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51'.", "2021-03-28T07:41:12.715562Z salida estándar: en System.Runtime.Loader.AssemblyLoadContext.LoadFromPath(IntPtr ptrNativeAssemblyLoadContext, String ilPath, String niPath, ObjectHandleOnStack retAssembly)", "2021-03-28T07:41:12.715567Z salida estándar: en System.Runtime.Loader.AssemblyLoadContext.LoadFromAssemblyPath (String AssemblyPath)", "2021-03-28T07:41:12.715572Z salida estándar: en System.Reflection.Assembly.LoadFrom(String ensembleFile)", "2021-03-28T07:41:12.715576Zsalida estándar: en System.Reflection.Assembly.LoadFromResolveHandler (remitente del objeto, argumentos ResolveEventArgs) ", "2021-03-28T07:41:12.715581Z salida estándar: en System.Runtime.Loader.AssemblyLoadContext.InvokeResolveEvent (ResolveEventHandler eventHandler, ensamblaje RuntimeAssembly, nombre de cadena)", "2021-03-28T07:41:12.715586Z salida estándar: en System.Runtime.Loader.AssemblyLoadContext.OnAssemblyResolve (ensamblaje RuntimeAssembly, nombre completo del ensamblaje de cadena)", "2021-03-28T07:41:12.715590Z salida estándar: en StackExchange.Redis.ConnectionMultiplexer.Connect (configuración de Opciones de configuración, registro de TextWriter)",



------------------------------------

Intente agregar <_FunctionsSkipCleanOutput>true</_FunctionsSkipCleanOutput> a su archivo de proyecto, aún no lo he probado, pero estoy siguiendo la solución publicada aquí para un problema similar.

1

Ya probé esto pero no funciona en las funciones de la nube de IBM

-ferit

28/03/2021 a las 10:07



------------------------------------

Resolví el problema degradandog StackExchange.Redis a una versión que no requiera dependencia de Pipelines.

1

Si esta solución funcionó, entonces existe la posibilidad de que haya encontrado un error que notamos en el tiempo de ejecución de dotnet, donde las dependencias transitivas no funcionaban. ¿Puedes echar un vistazo y ver si esto coincide con lo que experimentaste? github.com/apache/openwhisk-runtime-dotnet/issues/39

- Matt Welke

2 de junio de 2021 a las 10:48

Su guía para un futuro mejor - libreflare
Su guía para un futuro mejor - libreflare