2012-06-29 71 views
0

我们有一个在.NET Framework 4.0上运行的ASP.NET页面。使用HttpContext.Current.Application存储值

目前我们在应用程序的整个生命期中存储了一些值,这些值在HttpContext.Current.Application [“keyToTheValue”]

这是错误的地方存储值,我们需要一个无限期的时间, 或我们如何配置应用程序不回收这些值?

哦,重要的是要注意:我们实际上在集成模式下运行页面,也许这对应用程序缓存有一定的影响。

回答

1

如果你的数据是敏感然后将其存储在您的数据库使用它lifetime..it它不是那么使用永久Cookies和设置它的保质期为最大那么多敏感......

+0

你能解释一下你的意思吗?**持久**饼干? – SwissCoder

+1

持久性cookie存储在客户端计算机上的文本文件中。直到它们被过期或手动删除。它们是这样写的HttpCookie myCookie = new HttpCookie(“myCookie”); //在cookie中添加键值 myCookie.Values.Add(“userid”,objUser.id.ToString()); //设置cookie过期日期时间。使它持续12个小时。 myCookie.Expires = DateTime.Now.AddHours(12); //最重要的是,将cookie写入客户端。 Response.Cookies.Add(myCookie) –

+1

根据确切的用途,这可能是一个问题,当用户有Cookie被禁用.... – kad81

1

使用Application对象没有什么问题,但是如果你想在应用程序关闭的情况下保持你的数据(这种情况迟早会发生的话),你最好将你的值存储在数据库。

+0

谢谢。当前的情景需要在应用程序回收时删除这些值,我只是想知道如何避免随机/不可预测的应用程序回收。 – SwissCoder

+1

这听起来像是你真的不想删除应用程序回收的值,而是基于你认为更可预测的其他东西。也许将值存储在数据库中,然后编写自己的代码,以便按照您选择的日程安排(或基于事件)进行清理。然后,如果您有意外的应用程序重新启动,则不会丢失数据。 – kad81

+0

System.Web.HttpContext.Current.Application是否有大小限制? – Heinrich

1

这取决于数据和环境,但对于使用应用程序来获取全局值的简单数据可能没有问题。您应该查看System.Web.Caching命名空间以获得更高级的方案。此外,如果您处于某个网络服务器场或群集中,则可能需要推出自己的全局数据存储,以便您可以在多台服务器上共享它。

1

有中没有问题将数据存储在Application.But中,但它具有重置IIS后重置的限制。 因此根据您的情况使用它。