我有一系列Azure功能,我想通过InovcationId跟踪它们。在Application Insights中,InvocationId称为operation_Id。
我要做的是将operation_Id设置为在几个不同的Azure功能中相同。
当我通过跟随this answer传递ExecutionContext时,我可以在Azure函数中读取此属性,但我似乎无法改变它。有没有办法从Azure函数内部更改此值?
public static class TestOperationId
{
[FunctionName("TestOperationId")]
public static async Task<HttpResponseMessage> Run([HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = null)]HttpRequestMessage req,
ILogger log,
ExecutionContext exeCtx
)
{
var input = await req.Content.ReadAsStringAsync();
log.Info(input);
exeCtx.InvocationId = Guid.Parse(input);
return req.CreateResponse(HttpStatusCode.OK);
}
}
答案 0 :(得分:2)
InvocationId字段的定义是defined as
提供唯一标识当前调用的调用ID
Azure Functions不提供更改此功能,因为这意味着代码可以覆盖平台的方法来检测函数的唯一调用,这会干扰平台的“计费”和“度量标准”等内容。
听起来你真正想要的是跨功能关联。 Application Insights团队正在开展工作以帮助支持此功能,但与此同时,您可以看到其他人正在使用的解决方案,例如here。