1

我有一个 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 吗?

4

0 回答 0