gpt4 book ai didi

asp.net-core - 在操作过滤器中访问 IHttpContextAccessor - 危险吗?

转载 作者:行者123 更新时间:2023-12-04 03:01:36 25 4
gpt4 key购买 nike

David Fowler 和 Damian Edwards 最近在伦敦 NDC 发表了关于调试 asp.net core 2.0 的演讲。

In that talk ,他们会警告执行异步操作的 Controller 操作方法,然后尝试访问 IHttpContextAccessor,基本上它不是线程安全的。

我想知道这是否仅适用于操作方法,以及在异步操作过滤器中执行此操作是否安全(我有类似的东西在每个请求上运行):

public class SampleAttribute : IAsyncActionFilter
{
private readonly IHttpContextAccessor _httpContextAccessor;

public LoggedInUserAttribute(IHttpContextAccessor httpContextAccessor)
{
_httpContextAccessor = httpContextAccessor;
}

public async Task OnActionExecutionAsync(ActionExecutingContext filterContext, ActionExecutionDelegate next)
{
// Do something IO-bound more useful than...
await Task.Delay(1000);

// Then set something on the IHttpContextAccessor...
_httpContextAccessor.HttpContext.Items["Something"] = "Hello";

await next();
}

}

最佳答案

问题是关于从多个线程并行访问 HttpContext。演讲中的示例描述了由于 IHttpContextAccessor,有时很难判断是什么访问了 HttpContext。您上面的代码工作正常,一个线程一次访问 HttpContext(尽管您在过滤器中不需要它,因为 MVC 通过适当的过滤器上下文将它提供给您)。

关于asp.net-core - 在操作过滤器中访问 IHttpContextAccessor - 危险吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48725204/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com