C# 我可以将AsyncLocal与azure函数一起使用吗?

C# 我可以将AsyncLocal与azure函数一起使用吗?,c#,azure,azure-functions,C#,Azure,Azure Functions,我正在使用Azure函数,需要将HttpRequestMessage传递到调用的整个异步/等待函数链。在这种情况下,我可以改用AsyncLocal吗 共享代码: public class ApiController { public static AsyncLocal<HttpRequestContext> httpContext = new AsyncLocal<HttpRequestContext>(); [FunctionName("api")]

我正在使用Azure函数,需要将HttpRequestMessage传递到调用的整个异步/等待函数链。在这种情况下,我可以改用AsyncLocal吗

共享代码:

public class ApiController
{
    public static AsyncLocal<HttpRequestContext> httpContext = new AsyncLocal<HttpRequestContext>();

    [FunctionName("api")]
    public static async Task<HttpResponseMessage> RunAsync(
        [HttpTrigger(AuthorizationLevel.Anonymous, "GET", "POST", Route = "{requestType}/{source?}")]
        HttpRequestMessage req,
        string source,
        string requestType,
        TraceWriter logger)
    {
        HttpRequestContext requestContext = new HttpRequestContext(req, requestType, source);
        httpContext.Value = requestContext;
        return await RequestRouter.Dispatch();
    }
}
公共类ApiController
{
公共静态AsyncLocal httpContext=new AsyncLocal();
[函数名(“api”)]
公共静态异步任务RunAsync(
[HttpTrigger(AuthorizationLevel.Anonymous,“GET”,“POST”,Route=“{requestType}/{source?}”)]
HttpRequestMessage请求,
字符串源,
字符串请求类型,
TraceWriter(记录器)
{
HttpRequestContext requestContext=新的HttpRequestContext(请求,请求类型,源);
httpContext.Value=requestContext;
return wait RequestRouter.Dispatch();
}
}

在上面的代码中,我也想访问Dispatch()中的httpContext。我担心并发会发生什么?如果触发新请求,此方法的上下文是否会更改?

它应该可以工作
AsyncLocal
将负责在并发调用之间保留上下文。我做了一个快速测试,它能够按照预期保持请求


函数通常是小而简单的,所以我默认使用更简单的方法来传递上下文,通常只是传递参数。但是如果
AsyncLocal
与您的案例相关,请试一试。

您能展示一些代码吗?添加了一些代码片段