使用ThreadContext而不是HttpContext?

时间:2017-09-02 15:57:29

标签: .net multithreading asp.net-web-api threadcontext

我有一个3层架构(控制器/服务/存储库)以及所有层都需要的模型的域。每个图层都包含域,每个图层都包含它的“父”图层。所以存储库 - >服务 - > API

enter image description here

当请求进入Api时,会完成一些身份验证和授权。多个组织共享相同的表,因此该身份验证还包括范围组织信息。我称之为ApiContext。由于此信息在Api层中得到解析,因此较高层级无法访问此信息。

一般来说,我看到人们在这里使用HttpContext传递请求上下文,但我试图保持服务和存储库层不包含WebApi。

为了让链接上的ApiContext,我正在考虑使用ThreadContext,其中ApiContext具有由请求过滤器设置的Current字段。

class ApiContext {
  [ThreadStatic]
  public static ApiContext Current;
}

我不熟悉ThreadContext,但我很确定HttpContext使用它,所以我认为我应该使用它。

有关ThreadContext的问题。

使用异步方法会破坏ThreadContext吗? 将使用Thread.Run(()=> {})打破ThreadContext? 我不应该在这里使用ThreadContext有什么理由吗?

0 个答案:

没有答案