单个全局变量asp.net

时间:2012-12-05 19:12:09

标签: c# asp.net sql global-variables

我想知道如何设置单个全局变量,这个变量可以在ASP.net网站的所有网页中轻松访问。

这是通过课程来完成的,我将如何调用它?

一个示例是持有唯一的用户ID,但能够在所有网页上使用该ID进行SQL查询。

2 个答案:

答案 0 :(得分:4)

显而易见的地方是Session

所以例如

Session["MyId"] = 99; // to set it

myId = Session["MyId"]; // to get it

有时Sessions会失败..所以另一个地方就是Cookie - 假设它不是敏感数据..

 // Setting a cookie
 HttpCookie myCookie = new HttpCookie("MyID");
 DateTime now = DateTime.Now;

 // Set the cookie value.
 myCookie.Value = now.ToString();
 // Set the cookie expiration date.
 myCookie.Expires = now.AddMinutes(1);

 // Add the cookie.
 Response.Cookies.Add(myCookie);

您可以通过以下方式阅读Cookie:

 HttpCookie myCookie = Request.Cookies["MyId"];
 myId = myCookie.Value;

答案 1 :(得分:1)

这实际上取决于具体情况。您有多种选择可以为您提供不同的行为。

通常,对于成为命令参数的ID,您可以在生成链接以在页面之间传递它们时将其包括为查询字符串参数。即如果您有一个用于编辑用户的管理页面,您可能会生成一个包含URL的链接列表,如:

/Users/Edit.aspx?userID=123
/Users/Edit.aspx?userID=789

对于当前用户的ID,应由您的身份验证机制提供。例如(根据您的身份验证方式,可能与您的方案不同): ASP.NET Membership: Where is Current User ID Stored?

从那里,任何其他用户级别信息可以在通过外键与用户ID相关的表中。

Session []适用于当前用户的临时存储。应将其视为临时的原因是,如果应用程序池被回收,它将会过期或丢失。在这种情况下它通常很好,因为无论如何,用户将不得不重新登录并重新开始。只是不要存储任何非常重要的东西。

您可以使用静态类+静态属性来存储系统范围的信息。

我会避免使用cookies作为最后的手段。我的任何应用程序中涉及的唯一cookie是身份验证框架自动创建的cookie,我从未直接触及它们。对于用户或第三方对cookie的恶意操纵,您必须考虑很多场景。