我有一个OperationHelper类,如下所示:
public class OperationHelper
{
/// <summary>
/// Gets or sets the Add Operation value
/// </summary>
public static bool AddOperation { get; set; }
/// <summary>
/// Gets or sets the Edit Operation value
/// </summary>
public static bool EditOperation { get; set; }
/// <summary>
/// Gets or sets the Delete Operation value
/// </summary>
public static bool DeleteOperation { get; set; }
/// <summary>
/// Gets or sets the Select Operation value
/// </summary>
public static bool SelectOperation { get; set; }
}
对每个请求该值被重新分配。 当我运行这个地方它工作正常。 但是当我发表了一些代码值不会分配或不工作,因为它应该工作。
所以,想知道在Asp.Net与C#中的静态变量的行为。
是静态变量为全局变量,这是所有用户的访问? 如果用户A向真,用户B设置获取值True或它的变量的不同实例。
所以,想知道在Asp.Net与C#中的静态变量的行为。
是静态变量为全局变量,这是所有用户的访问? 如果用户A向真,用户B设置获取值True或它的变量的不同实例。
该行为是一样,只有当你下了池中一个工作进程中运行您的网站 。
如果您的游泳池有一个以上的工作过程,然后每个进程都有自己的静态值 ,并给出什么处理每个请求,给每个用户是您不知道的。 和工艺一起他们没有沟通。
因此,我们说,你有4个工作进程池。
用户A请求一个页面,流程1是回放和设置静态值A.
用户B请求一个页面,流程1是回放和静态值是A.
用户A请求一个页面,流程2是回放和静态值未设置。
等等。 更多关于这个问题: ASP.NET静态变量的生存期
当存储在asp.net aspx页面静态变量
使用的,而不是在ASP.NET应用程序状态的静态变量
在ASP.NET网站静态方法
Asp.net静态对象有时会出现非全球
的行为static
的变量是,他们正在尽快代码所属达到创建。 为了解决你的问题,可以考虑一个static constructor
的类正确初始化所有值你的愿望
public class OperationHelper
{
/// <summary>
/// Gets or sets the Add Operation value
/// </summary>
public static bool AddOperation { get; set; }
/// <summary>
/// Gets or sets the Edit Operation value
/// </summary>
public static bool EditOperation { get; set; }
/// <summary>
/// Gets or sets the Delete Operation value
/// </summary>
public static bool DeleteOperation { get; set; }
/// <summary>
/// Gets or sets the Select Operation value
/// </summary>
public static bool SelectOperation { get; set; }
static OperationHelper() {
//initialize your static variables here
}
}
见这里的一个参考static
构造函数。
静态变量仅创建一次。 所以userB
将获得该变量的同一个实例来回答你的问题。
更多关于这个已经讨论了这里 。
你需要考虑的会话会给你不同的值,为每个用户访问站点