我希望在函数运行时使用Microsoft.Azure.WebJobs.ExecutionContext
来获取InvocationId
,但有没有办法在实际函数调用之外得到它。
因此,如果调用类需要某种上下文,它可以使用它。可能吗?
当你运行一个函数你有ExecutionContext
public static HttpResponseMessage Run(HttpRequestMessage req, TraceWriter log, ExecutionContext context)
{
return req.CreateResponse(System.Net.HttpStatusCode.OK, context.InvocationId);
}
因此,如果您调用任何方法,您可能需要将此ID传递给它。我不确定是否有任何类型的静态助手。
您必须通过所有调用将其作为参数进行处理,尝试使用某种环境存储来解决这个问题,例如TLS
或AsyncLocal
可能不是最好的方法,但它可能会起作用。
如果您不使用异步API,您可能会逃避:
[ThreadLocal]
public static Guid InvocationId;
...但是如果您使用异步,则可以尝试:
public static AsyncLocal<Guid> InvocationId = new AsyncLocal<Guid>();
祝好运!