在ASP.NET MVC中执行每个请求,并与其他请求共享静态变量



我可以将请求的活动实体框架数据库上下文作为静态属性存储在某个地方吗?这样就可以很容易地从验证器、助手等处获取。

**E.G将其从全局操作过滤器设置为静态类

public static DBContext GlobalHelper.ActiveDbContextForRequest;

每个请求都共享这些静态属性吗?如果他们这样做,我想这是行不通的。

是的,静态变量在整个应用程序中共享(在所有线程中)。如果没有来自各种请求的同步,您就无法安全地访问这些变量(因为每个请求都在不同的线程上处理)。

即使同步访问这些变量,静态变量也只有一个实例,所以所有线程都会看到相同的值——这样就不能有特定于请求的值。

默认情况下,静态变量是整个应用程序域的全局变量,因此答案是肯定的,它们由它提供的所有请求共享。

最新更新