es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo configurar la variable de entorno para la cadena de conexión del desencadenador de Function ServiceBus en Azure para .NET 5 de manera programática?

Para empezar, sé que la cadena de conexión proviene de la Configuración en el Portal de Azure / local.settings.json, y que es una variable de entorno a la que se puede acceder de la siguiente manera:

Environment.GetEnvironmentVariable("Name", EnvironmentVariableTarget.Process);

Estoy intentando establecer la cadena de conexión “ServiceBusTrigger” desde el archivo appsettings.json.
He agregado un archivo appsettings.json siguiendo este blog sobre cómo hacerlo. Puedo acceder a la configuración desde el archivo appsettings.json, sin embargo, en Program.cs cuando intento utilizar lo siguiente para establecer la variable de entorno:

.ConfigureAppConfiguration(c =>
{
   var config = c.SetBasePath(Environment.CurrentDirectory)
               .AddJsonFile("appsettings.json", true, true)
               .AddEnvironmentVariables()
               .Build();
   // Establecer la variable de entorno para la cadena de conexión
   Environment.SetEnvironmentVariable(config["ConnectionString:Name"], config["ConnectionString:Value"]);
})

donde “Name” es lo que se pasa a la Conexión en la función, y “Value” es la cadena de conexión, obtengo el siguiente error:

Microsoft.Azure.WebJobs.ServiceBus: Falta o está vacía la cadena de conexión del ServiceBus de Microsoft Azure WebJobs SDK “Name”.

La conexión a la que me refiero:

public async Task Run([ServiceBusTrigger("myqueue", Connection = "Name")] string myQueueItem, FunctionContext) { // Alguna implementación }

Estoy tratando de evitar establecer la cadena de conexión “Name” en la Configuración de la aplicación en el portal de Azure. ¿Hay alguna manera de hacerlo programáticamente?

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Es posible establecer la cadena de conexión de ServiceBusTrigger programáticamente accediendo al archivo appsettings.json en el archivo Program.cs de la Azure Function.

    Para hacer esto, primero agregue un archivo appsettings.json al proyecto siguiendo los pasos descritos en el artículo del blog mencionado en la pregunta. Luego, en el archivo Program.cs, use el siguiente código para establecer la variable de entorno para la cadena de conexión:

    .ConfigureAppConfiguration(c => 
    {
        var config = c.SetBasePath(Environment.CurrentDirectory)
                    .AddJsonFile("appsettings.json", true, true)
                    .AddEnvironmentVariables()
                    .Build();
        // Estableciendo la variable de entorno para la cadena de conexión
        Environment.SetEnvironmentVariable(config["ConnectionString:Name"], config["ConnectionString:Value"]);
    })
    

    Donde “Name” es el nombre de la conexión en el atributo ServiceBusTrigger, y “Value” es la cadena de conexión real.

    Es importante tener en cuenta que el archivo appsettings.json debe agregarse al proyecto e incluirse en la implementación para que esto funcione correctamente.

    Al establecer la variable de entorno programáticamente, es posible evitar establecer el “Name” de la cadena de conexión en la configuración de la aplicación en el portal de Azure.

Comments are closed.