停止我的应用程序时,ASP.NET静态变量仍然存在!

时间:2009-12-02 23:05:39

标签: asp.net static

我的应用程序中有一些静态类。 当我运行应用程序时,停止调试并重新启动我注意到这些变量留在内存中! 因此,当应用程序终止时,它们会被遗忘并重新连接到应用程序的下一个实例。 这会产生你所期望的非常疯狂的结果。

当应用程序终止时,你能以编程方式告诉静态变量自我毁灭吗?

2 个答案:

答案 0 :(得分:7)

只要包含它们的AppDomain保持活动状态,静态变量就会保留。如果你看到它们在调试会话之间持续存在,那意味着当你停止调试时应用程序不会停止运行 - 这两次都是同一个实例。尝试重新启动Web服务器。

我想补充一点,如果静态变量往往是持久性的事实导致了疯狂的结果,那么你可能没有正确使用它们,并且可能根本不应该使用静态变量。

答案 1 :(得分:1)

停止调试器不会停止IIS或Cassini。

如果你正在使用Cassini,你需要从命令托盘中明确地停止它,以便让它回收。

否则,您可以尝试修改web.config以强制循环。

我在Connect上提交过一次关于此问题的错误;微软表示这是“按设计”。