【问题标题】:Is it normal for a variable, in VB.NET, to retain its value between page transactions?在 VB.NET 中,变量在页面事务之间保留其值是否正常?
【发布时间】:2023-03-12 04:05:01
【问题描述】:

某些变量没有被重置并仍然保持其值是否正常 页面交易后, 甚至在关闭浏览器但立即重新打开并重新浏览相同的网页之后?

在我的 VB ASP.NET Web 应用程序中,用户执行几个步骤。

我发现了一个错误,在最后一步之后,如果用户刷新页面几次, 然后关闭浏览器(IE11), 然后打开新浏览器并转到站点, 当调用 Page_load() 时,Visual Basic 变量有时不会重置,并且仍然具有先前浏览页面时的值。

【问题讨论】:

  • 如果你能显示一些代码真的很有帮助......例如,如果变量是Shared,那就可以解释它了。
  • 您使用的是 Session 还是 Cookie 变量?

标签: asp.net vb.net visual-studio


【解决方案1】:

这取决于跟踪该变量的状态。

如果变量在本地限定为方法,那么不,它仍然不会相同。一旦方法完成,值就会丢失。

如果变量是对象上的实例值,只要该对象在内存中,它就会被保留。一旦对象被释放(通常在没有变量引用它时),值就会丢失。

如果变量是静态的(在 VB 中为Shared),那么它的作用域就是应用程序域。只要应用程序正在运行,它将继续保持其价值。一旦应用程序退出,该值就会丢失。

如果变量保留在会话中,那么它将保留其值直到会话结束(在代码中,通常由用户注销或应用程序退出)。一旦会话结束,值就会丢失。

如果变量是从 cookie 填充的,则它存在于客户端计算机上,并且将在客户端访问应用程序的任何时候提供给应用程序。 cookie过期时间可以在创建cookie的时候设置,一旦过期,值就丢失了。

如果变量是从某个外部持久性(例如数据库)填充的,那么它将保留其值,直到该持久性被更改。应用程序可以关闭、重新启动,甚至在不同的机器上运行,并且持久性仍然具有价值。

查看你的变量并确定它的作用域,这会告诉你它什么时候会失去它的价值。

【讨论】:

    猜你喜欢
    • 2023-02-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-11
    相关资源
    最近更新 更多