我的共享变量会失去价值吗?(asp.net vb)

我的共享变量会失去价值吗?(asp.net vb),asp.net,vb.net,scope,Asp.net,Vb.net,Scope,我有一个包含一些变量(与其他页面共享)的类includes.vb,如: 然后我有一个函数,它对这些变量做一些处理,并用值返回它们 Return pageid 当我单步执行代码时,变量有值(在单步执行函数时),但当它们返回到页面时,返回null 是否每次加载页面时都会丢失值? 你能推荐一种替代方法吗 非常感谢。在web项目中使用共享变量不是一个好主意:首先,每次执行“iisreset”或回收应用程序池时,这些变量都会被重置。接下来,这些变量不是每个用户的,而是每个进程的,而且(我相信)不能保证线

我有一个包含一些变量(与其他页面共享)的类includes.vb,如:

然后我有一个函数,它对这些变量做一些处理,并用值返回它们

Return pageid
当我单步执行代码时,变量有值(在单步执行函数时),但当它们返回到页面时,返回null

是否每次加载页面时都会丢失值? 你能推荐一种替代方法吗


非常感谢。

在web项目中使用共享变量不是一个好主意:首先,每次执行“iisreset”或回收应用程序池时,这些变量都会被重置。接下来,这些变量不是每个用户的,而是每个进程的,而且(我相信)不能保证线程安全,因此一个线程可能会更改变量的值,然后另一个线程会将该值重置为不同的值


从变量名“PageID”判断,我认为您正在尝试跟踪用户访问的最后一个页面。如果是这种情况,那么会话变量范围对您来说是一个更好的解决方案。请参阅此处的教程:

在web项目中使用共享变量不是一个很好的主意:首先,每次执行“iisreset”或回收应用程序池时,这些变量都会被重置。接下来,这些变量不是每个用户的,而是每个进程的,而且(我相信)不能保证线程安全,因此一个线程可能会更改变量的值,然后另一个线程会将该值重置为不同的值


从变量名“PageID”判断,我认为您正在尝试跟踪用户访问的最后一个页面。如果是这种情况,那么会话变量范围对您来说是一个更好的解决方案。请参阅此处的教程:

您应该使用会话变量

Session("PageID") = 0
并在需要时随时访问它

这不是一个最佳实践,但如果您想更严格,您可以在每次会话中使用特定的应用程序变量,这样,如果用户在一天后返回网站,它仍然不会丢失(只要您没有进行iisreset)

为了克服iisreset将是一个更大的过度使用,您可以将该值保存到文件/DB中,并随时检索它。(请不要那样做!!)

也许这可以进一步解释:
您应该使用会话变量

Session("PageID") = 0
并在需要时随时访问它

这不是一个最佳实践,但如果您想更严格,您可以在每次会话中使用特定的应用程序变量,这样,如果用户在一天后返回网站,它仍然不会丢失(只要您没有进行iisreset)

为了克服iisreset将是一个更大的过度使用,您可以将该值保存到文件/DB中,并随时检索它。(请不要那样做!!)

也许这可以进一步解释:

有什么替代方案?我如何才能获得所需的结果?PageID从querystring中获取id项,并使用它确定需要向用户显示的页面。有什么替代方案?我如何才能获得期望的结果?PageID从querystring中获取id项,并使用它确定需要向用户显示的页面。