可选会话/静态变量ASP.NET/C#

本文关键字:ASP NET 变量 静态 会话 | 更新日期: 2023-09-27 17:50:37

我想知道是否有一个有效的会话或静态在。net环境。我需要的是一个变量来存储一些数据,维护其值,通过所有ASP访问。. NET页面/c#表单,但不是所有使用应用程序的用户唯一的。

可选会话/静态变量ASP.NET/C#

那么您的答案可能是应用程序缓存。查看System.Web.Caching

由于对缓存对象的生命周期有一些讨论,所以可以设置它。用户没有具体说明,但它必须存活多长时间。在应用程序循环之间?在单个实例的生命周期中,它是否需要在实例之间。

我认为您正在寻找应用程序状态而不是应用程序缓存。应用程序状态将以与会话状态相同的方式工作,但将在所有会话之间共享。

示例用法:

 Application["Message"] = "Welcome to my Website"; 

更多信息:http://www.codeproject.com/Articles/87316/A-walkthrough-to-Application-State

可以使用应用程序缓存吗?它为整个应用程序中的所有用户共享,可以从所有页面访问,并且不是每个用户唯一的。

关于如何使用缓存API的更多细节请参阅这个和这个

您可以尝试使用应用程序范围的变量来处理这个问题。

第一个在你的全局。在ax文件中添加以下内容:

void Application_Start(object sender, EventArgs e)
{
    [Other Stuff Already Here Omitted]
    Application["MyVariable"] = "My Default value";
}

那么在任何页面上,你都可以访问这个:

var myVar = Application["MyVariable"];

您可以将一个类公开为Static。这将使它在所有会话中可用,但仅限于应用程序实例。

答案是否定的。不存在"。"网络环境"在这个层面上。你的。net代码也从主机获得运行时限制。让我们定义两个主机(还有更多):IIS和" simple main exe".

对于IIS托管代码,您正在主机创建线程(或者更确切地说是分配一个线程)并在该线程上执行您的代码的环境中操作。主机本身定义何时以及是否重置进程。您不能,或者说不应该,假设是哪个进程或线程在执行您的代码。当您在farm中讨论iis时,这一点会得到增强。

对于exe中的简单主代码,操作系统创建进程和初始化的第一个线程,并将执行指针设置为main函数中的第一条语句。

"static"在拥有进程的整个生命周期中保持状态,这是。net给你的保证。

"Session"是处理比静态属性更多的特定实现。

我建议在描述你的主人时,对这个问题进行改进。对于iis,答案可能是AppFabric缓存。

希望能有所帮助