我有一个3层架构(控制器/服务/存储库)以及所有层都需要的模型的域。每个图层都包含域,每个图层都包含它的“父”图层。所以存储库 - >服务 - > API
当请求进入Api时,会完成一些身份验证和授权。多个组织共享相同的表,因此该身份验证还包括范围组织信息。我称之为ApiContext
。由于此信息在Api层中得到解析,因此较高层级无法访问此信息。
一般来说,我看到人们在这里使用HttpContext传递请求上下文,但我试图保持服务和存储库层不包含WebApi。
为了让链接上的ApiContext,我正在考虑使用ThreadContext,其中ApiContext具有由请求过滤器设置的Current
字段。
class ApiContext {
[ThreadStatic]
public static ApiContext Current;
}
我不熟悉ThreadContext,但我很确定HttpContext使用它,所以我认为我应该使用它。
有关ThreadContext的问题。
使用异步方法会破坏ThreadContext吗? 将使用Thread.Run(()=> {})打破ThreadContext? 我不应该在这里使用ThreadContext有什么理由吗?