C# 我可以将AsyncLocal与azure函数一起使用吗?
我正在使用Azure函数,需要将HttpRequestMessage传递到调用的整个异步/等待函数链。在这种情况下,我可以改用AsyncLocal吗 共享代码: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")]
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
与您的案例相关,请试一试。您能展示一些代码吗?添加了一些代码片段