Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

592
Views
Funciones duraderas: ¿Cómo pasar un parámetro al orquestador?

Soy nuevo en las funciones de Azure Durable y he estado siguiendo el código de muestra en el libro "Libro de recetas de computación sin servidor de Azure" y estoy atascado porque la función .GetInput en mi orquestador devuelve un valor nulo. Mi activador Blob pasa el nombre del archivo como un parámetro en la llamada a mi orquestador. Creo que está llamando a la función sobrecargada incorrecta, pero no estoy seguro de cómo llamar a la correcta.

 await starter.StartNewAsync("CSVImport_Orchestrator", name);
 [FunctionName("CSVImport_Orchestrator")] public static async Task<List<string>> RunOrchestrator([OrchestrationTrigger] IDurableOrchestrationContext context) { var outputs = new List<string>(); string CSVFileName = context.GetInput<string>(); //<<== returns null??? { List<Employee> employees = await context.CallActivityAsync<List<Employee>>("ReadCSV_AT", CSVFileName); } return outputs; } [FunctionName("CSVImportBlobTrigger")] public static async void Run([BlobTrigger("import-obiee-report/{name}", Connection = "StorageConnection")]Stream myBlob, string name, [DurableClient]IDurableOrchestrationClient starter, ILogger log) { string instanceId = await starter.StartNewAsync("CSVImport_Orchestrator", name); log.LogInformation($"C# Blob trigger function Processed blob\n Name:{name} \n Size: {myBlob.Length} Bytes"); }

De antemano, gracias por su ayuda.

over 4 years ago · Santiago Trujillo
1 answers
Answer question

0

Está llamando a la sobrecarga no genérica de StartAsync(string, string) donde el segundo argumento de string representa el InstanceId y no el argumento de entrada. También hay una sobrecarga genérica donde el segundo argumento representa los datos. Está pasando una string , por lo que la resolución de sobrecarga ve dos posibles candidatos. Luego prefiere el no genérico ya que es una coincidencia exacta , por lo que "pierde" sus datos.

Si realmente necesita una string para sus datos de entrada, deberá especificar el argumento genérico explícitamente para obligar al compilador a seleccionar la sobrecarga correcta:

 await starter.StartAsync<string>("CSVImport_Orchestrator", name);

Ahora, la documentación también establece que la entrada debe ser un objeto JSON serializable. Técnicamente, una string lo es, pero no estoy seguro de cómo funciona con el serializador del orquestador. En su lugar, puede pasar una clase que contenga sus datos. Esto tiene la ventaja de que el argumento genérico se inferirá correctamente:

 public class Data { public string Name { get; set; } } // calling await starter.StartAsync("CSVImport_Orchestrator", new Data { Name = name }); // using var csvFileName = context.GetInput<Data>()?.Name;
over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!