Azure功能上下文

问题描述 投票:2回答:2

我希望在函数运行时使用Microsoft.Azure.WebJobs.ExecutionContext来获取InvocationId,但有没有办法在实际函数调用之外得到它。

因此,如果调用类需要某种上下文,它可以使用它。可能吗?

c# azure azure-functions
2个回答
0
投票

当你运行一个函数你有ExecutionContext

public static HttpResponseMessage Run(HttpRequestMessage req, TraceWriter log, ExecutionContext context)
{
    return req.CreateResponse(System.Net.HttpStatusCode.OK, context.InvocationId);
}

因此,如果您调用任何方法,您可能需要将此ID传递给它。我不确定是否有任何类型的静态助手。


0
投票

您必须通过所有调用将其作为参数进行处理,尝试使用某种环境存储来解决这个问题,例如TLSAsyncLocal可能不是最好的方法,但它可能会起作用。

如果您不使用异步API,您可能会逃避:

[ThreadLocal]
public static Guid InvocationId;

...但是如果您使用异步,则可以尝试:

public static AsyncLocal<Guid> InvocationId = new AsyncLocal<Guid>();

祝好运!

© www.soinside.com 2019 - 2024. All rights reserved.