Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Asp.net静态成员变量问题

0 views
Skip to first unread message

cellye

unread,
Aug 26, 2007, 10:42:01 PM8/26/07
to
ASP.NET应用程序开发时,便用静态变量进行共享数据,但是发现有时静态变量的数据被清空了.这是为什么?
是不是有生存周期?会不会根据服务器的内存变小而释放,我想了解一下,ASP.NET静态变量的存储机制,包括生存周期.与C/S的静态变量有什么区别.

谢谢!

liuyh_...@hotmail.com

unread,
Aug 27, 2007, 5:38:54 PM8/27/07
to
(1))首先,静态变量是在内存里,是一块共享内存的,客户端的访问是多线程的,那么一旦一个用户改变一个变量,那么所有用户的都变了。
(2)其次,静态变量的生存期有限,当IIS的内存占用超过一定范围时,系统会自动清理SESSION,具体机制还不清楚,静态变量有可能被清空。

"cellye" <cel...@discussions.microsoft.com> 写入消息
news:B17CCE8C-F5F1-4031...@microsoft.com...

小猫

unread,
Aug 28, 2007, 11:40:23 AM8/28/07
to

你说的这个是 application

工程师来说一下吧, 我也想知道是怎么会事情。


<liuyh_...@hotmail.com> 写入消息新闻:889E5C2A-734E-471D...@microsoft.com...

grass

unread,
Aug 28, 2007, 10:06:01 PM8/28/07
to
会自动清理Session?看来保存在Session里也不安全呀.
还是保存在ViewState里吧
--


liuyh_...@hotmail.com”编写:

v-wy...@prcvap.microsoft.com

unread,
Aug 30, 2007, 10:59:54 PM8/30/07
to

是的, 正像 liuyh 所提到的。

静态变量是保存在内存中的一块共享区域的,它的生存时间是与整个应用程序的运行时间相一致的。也就是说只要 应用程序 一直在跑,这个静态变量就一直存在,一旦应用程序被终止了,整块内存被释放,这个静态变量就不存在了。这些在C/S模型中工作都都很好。

但是在Asp.net的程序中,就需要注意到所有的application在IIS6服务器中,并不是一直都运行的。如果程序超过20分钟(默认设置)没有新的http Request请求。IIS6出于节约性能的考量就会终止当前的Application。(Session/Cache/静态变量)就都被清空了。不但如此,如果程序运行时间超过 1740 分钟(默认设置),为了方式某些程序长期运行导致占据大量内存不释放,IIS6自动会对他作一次restart.同样也会导致(Session/Cache/静态变量)清空。还有的可能性的就是程序遇到了重大错误,IIS6自动执行一次重起。

所以建议在Application_End事件中加入日志。然后看看当静态变量被清空的时候。是否有关于Application_End的日志。如果有的话,就说明是程序已经被restart了。

谢谢
WenYuan - 王文渊
在线技术支持工程师
微软全球技术支持中心
---------------------------------------------------------------------------------------
我们的服务时间:周一至周五9:00-18:00(节假日除外)。我们将在两个工作日(48小时)内提供初始回应,并和您一起研究并解决问题。更多微软新闻组技术支持信息,请访问:http://support.microsoft.com/gp/newsgroupsupport/zh-cn.
回帖时,请在您的新闻组阅读器中使用“回复组(Reply to Group)”,这将帮助其他用户从您的提问中获益
---------------------------------------------------------------------------------------
本贴子以”现状”提供且没有任何担保,同时也没有授予任何权利。

苤癡

unread,
Aug 31, 2007, 12:01:49 PM8/31/07
to

也就是说, 在 B/S 模式下 静态变量 基本是废物。


应用程序 一直在跑 的 B/S 应用很少见了。


<v-wy...@prcvap.microsoft.com> 写入消息新闻:e10bf051-99f9-4d76...@ms.shabap01.publicpsswebcat...

0 new messages