我有一个包含.vb的类,它包含一些变量(与其他页面共享),如:
Public Shared pageid As Integer = 0
然后我有一个函数可以对这些变量进行一些处理,并使用值返回它们;
Return pageid
当我单步执行代码时,变量具有值(在单步执行函数时),但是当它们返回到页面时,它们会返回null。
每次加载页面时它们是否都会失去价值? 你能建议一种替代方法吗?
非常感谢。
答案 0 :(得分:2)
在Web项目中使用共享变量不是一个好主意:首先,每次执行“iisreset”或回收应用程序池时,都会重置这些变量。接下来,这些变量不是每个用户,而是每个进程,并且(我相信)不保证是线程安全的,因此一个线程可能会更改变量的值,然后另一个线程将值重置为不同的值。
从变量名称“PageID”判断,我认为您正在尝试跟踪用户访问过的最后一页。如果是这种情况,那么会话变量范围对您来说是更好的解决方案。请参阅此处的教程:http://msdn.microsoft.com/en-us/library/ms178581.aspx
答案 1 :(得分:2)
你应该使用Session变量。
Session("PageID") = 0
并在每次需要时访问它。
不是最佳实践,但如果你想要更严格,你可以为每个会话使用特定的应用程序变量,这样如果用户在一天之后返回网站,它仍然不会丢失(只要你没有做了一个iisreset)。
要克服iisreset将是一个更大的过度杀伤,您可以将值保存到文件/数据库并随时检索它。 (请不要那样做!)