C# Isolated AzureFunction:parametro BlobOutput

C# Isolated AzureFunction:parametro BlobOutput

Soluzione per AzureFunction isolata in C#:il parametro BlobOutput
è riportato di seguito:

Come posso passare il parametro a BlobOutput?
Devo generare il nome del BLOB in fase di esecuzione. C'è un modo dichiarativo per farlo?
Qui puoi vedere che devo impostare il valore "nome" del parametro.

    [BlobOutput("container/{name}", Connection = "AzureWebJobsStorage")]
        public static object Run([HttpTrigger(AuthorizationLevel.Anonymous, "post")] HttpRequestData req, out string name,
            FunctionContext executionContext)
{...}

Ho giocato con il contesto dell'esecuzione ma senza fortuna.

Non credo che tu possa ottenere il nome del BLOB in questo modo dal trigger http. Mi vengono in mente le seguenti opzioni.

  1. Utilizzare la coda o la funzione attivata da BLOB. Con ciò otterrai il nome del BLOB in modo dinamico dai dati del trigger stesso. Ad esempio,

     public static void Run(
     [BlobTrigger("sample-images/{name}")] Stream image,
     [Blob("sample-images-md/{name}", FileAccess.Write)] Stream imageSmall)
    

    {

  2. Usa l'espressione di associazione di sistema per formare il nome del BLOB di output.

     public static async Task<IActionResult> Run(
         [HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = "blobname")] HttpRequest req,
         [Blob("sourcefolder/output{DateTime.UtcNow}", FileAccess.Write, Connection = "AzureWebJobsStorage")] Stream blobStream,
         ILogger log)
     {
    
  3. Rimuovere del tutto l'associazione di output e creare un client BLOB nella funzione stessa. Ciò ti darà il pieno controllo sul nome del BLOB o su qualsiasi altra cosa di cui hai bisogno. Se hai più funzioni nella tua applicazione, è meglio creare un servizio singleton e avere questo oggetto di connessione lì.


No