尝试使用“速记”元组从 HttpTrigger 函数将多个参数传递到 Azure Durable Orchestrator 函数:
var param1 = Guid.NewGuid().ToString();
var param2 = Guid.NewGuid().ToString();
// Function input comes from the request content.
string instanceId = await client.ScheduleNewOrchestrationInstanceAsync(nameof(Function1), (param1, param2));
然后在我的 Orchestrator 功能中再次获取它们
var (param1, param2) = context.GetInput<(string, string)>();
但是 param1 和 param2 只是 null.... 如果我将代码更改为“正常元组”:
var param1 = Guid.NewGuid().ToString();
var param2 = Guid.NewGuid().ToString();
// Function input comes from the request content.
string instanceId = await client.ScheduleNewOrchestrationInstanceAsync(nameof(Function1), Tupele.Create(param1, param2));
和
var (param1, param2) = context.GetInput<Tuple<string, string>>();
参数传递正确。
我做错了什么吗?根据文档,使用“速记元组”应该可以..
Env:
Target framework: net8.0
AzureFunctionsVersion v4
Mode: Isolated mode
Core Tools Version: 4.0.5455 Commit hash: N/A (64-bit)
Function Runtime Version: 4.27.5.21554
简写语法实际上转换为值元组,并且它们使用字段而不是属性。当从元组访问
ItemX
时,您可以看到这一点,简写将是字段图标,并且 Tuple.Create()
的输出将具有 prop 图标。
我认为问题在于序列化器默认情况下不会序列化字段,因此它会被忽略,因此它总是为空。