单个全局变量asp.net



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

这会通过课堂完成吗?我该如何称呼它?

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

显而易见的地方是Session

例如

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

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

有时会话会失败。。所以另一个地方是Cookies——假设它不是敏感数据。。

// 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;

这实际上取决于具体的场景。你有各种各样的选择,会给你不同的行为。

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

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

对于当前用户的ID,应该由身份验证机制提供。例如(根据您的身份验证方式,可能会有所不同):ASP.NET成员身份:当前用户ID存储在哪里?

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

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

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

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

最新更新