首页 \ 问答 \ ASP.NET静态变量的生命周期(Lifetime of ASP.NET Static Variable)

ASP.NET静态变量的生命周期(Lifetime of ASP.NET Static Variable)

我拿在页面类中定义(未在Global.asax中)静态变量的一些信息。 我只在代码中声明变量,如:

protected static int SomeGlobalUnsecureID;
protected static string SomeGlobalUnsecureString;

并在PageLoad事件中定义变量。 例如,我从数据库中检查ID,如果与SomeGlobalUnsecureID不同,我从其他地方更新SomeGlobalUnsecureID和String,否则保留原样。 这在我的应用程序是完全安全的 逻辑(即这些数据不安全,每个人都可以访问它们,没有问题); 只有我想要完成的是

  1. 保持相同的内存量,无论用户连接

  2. 更改当且仅当持久性信息与“内存”中的信息不同时(因为实际读取字符串对我而言是耗时的。

现在,由于我在PageLoad中进行检查,所以在重新加载的页面中没有问题。 但是我的页面已经满了WebMethods,有时我看到静态变量被归零。 奇怪的部分是 即使静态变量为零,会话仍然处于活动状态(so-> no server或app。pool restart等)

这对我来说很奇怪 我假设静态变量将保持其值,直到应用程序(以某种方式)结束。 但即使Session没有到期,静态变量也被清零。 你建议什么 使用应用程序变量更好的选择? 我在网上阅读的所有文档都提供静态变量而不是应用程序变量,我需要声明它们有什么不同吗?


I am holding some information in static variables defined in page class (not in Global.asax). I only declare variable in code like:

protected static int SomeGlobalUnsecureID;
protected static string SomeGlobalUnsecureString;

and define the variable in PageLoad event. For example, I check ID from the database, if it's different from SomeGlobalUnsecureID, I update SomeGlobalUnsecureID and String from somewhere else, otherwise leave them as is. This is perfectly safe in my app. logic (i.e. those data are not secure, everybody can access them, no problem); only thing I want to accomplish is

  1. Hold the same amount of memory regardless of users connected

  2. Change if and only if persistent info is different from the one in 'memory' (because actually reading the string is time consuming for me.

Now, since I make the check in PageLoad, I have no problems in reloaded pages. However my page is full of WebMethods, and sometimes I see that the static variables are zeroed. And the strange part is; the session is still active even when the static variables are zeroed (so-> no server or app. pool restart etc.)

This is really strange for me. I assume that static variable will hold its value until the application (somehow) ends. But even the Session did not expire, the static variable is zeroed. What do you suggest? Is using application variables a better choice? All documents I've read on web suggest static variables instead of application variables, do I need to declare them somehow different?


原文:https://stackoverflow.com/questions/8919095
更新时间:2023-12-15 15:12

最满意答案

你在客户端和服务器上都使用192.xxx吗? 我记得之前看到一个问题,在这个问题中,TCP需要匹配客户端和服务器名称(与某个消息属性相关的东西),所以如果您使用“localhost”定义服务并且客户端有问题。


Do you use 192.x.x.x on both client and server? I remember seeing an issue a while back in which for TCP the client and server names needed to match (something related to one of the message properties), so if you define the service with "localhost" and the client with there would be a problem.

相关问答

更多

相关文章

更多

最新问答

更多
  • 散列包括方法和/或嵌套属性(Hash include methods and/or nested attributes)
  • TensorFlow:基于索引列表创建新张量(TensorFlow: Create a new tensor based on list of indices)
  • 企业安全培训的各项内容
  • 错误:RPC失败;(error: RPC failed; curl transfer closed with outstanding read data remaining)
  • NumPy:将int64值存储在np.array中并使用dtype float64并将其转换回整数是否安全?(NumPy: Is it safe to store an int64 value in an np.array with dtype float64 and later convert it back to integer?)
  • 注销后如何隐藏导航portlet?(How to hide navigation portlet after logout?)
  • 将多个行和可变行移动到列(moving multiple and variable rows to columns)
  • 对setOnInfoWindowClickListener的意图(Intent on setOnInfoWindowClickListener)
  • Angular $资源不会改变方法(Angular $resource doesn't change method)
  • 如何配置Composite C1以将.m和桌面作为同一站点提供服务(How to configure Composite C1 to serve .m and desktop as the same site)
  • 不适用:悬停在悬停时:在元素之前[复制](Don't apply :hover when hovering on :before element [duplicate])
  • Mysql DB单个字段匹配多个其他字段(Mysql DB single field matching to multiple other fields)
  • 产品页面上的Magento Up出售对齐问题(Magento Up sell alignment issue on the products page)
  • 是否可以嵌套hazelcast IMaps?(Is it possible to nest hazelcast IMaps? And whick side effects can I expect? Is it a good Idea anyway?)
  • UIViewAnimationOptionRepeat在两个动画之间暂停(UIViewAnimationOptionRepeat pausing in between two animations)
  • 在x-kendo-template中使用Razor查询(Using Razor query within x-kendo-template)
  • 在BeautifulSoup中替换文本而不转义(Replace text without escaping in BeautifulSoup)
  • 如何在存根或模拟不存在的方法时配置Rspec以引发错误?(How can I configure Rspec to raise error when stubbing or mocking non-existing methods?)
  • asp用javascript(asp with javascript)
  • “%()s”在sql查询中的含义是什么?(What does “%()s” means in sql query?)
  • 如何为其编辑的内容提供自定义UITableViewCell上下文?(How to give a custom UITableViewCell context of what it is editing?)
  • c ++十进制到二进制,然后使用操作,然后回到十进制(c++ Decimal to binary, then use operation, then back to decimal)
  • 以编程方式创建视频?(Create videos programmatically?)
  • 无法在BeautifulSoup中正确解析数据(Unable to parse data correctly in BeautifulSoup)
  • webform和mvc的区别 知乎
  • 如何使用wadl2java生成REST服务模板,其中POST / PUT方法具有参数?(How do you generate REST service template with wadl2java where POST/PUT methods have parameters?)
  • 我无法理解我的travis构建有什么问题(I am having trouble understanding what is wrong with my travis build)
  • iOS9 Scope Bar出现在Search Bar后面或旁边(iOS9 Scope Bar appears either behind or beside Search Bar)
  • 为什么开机慢上面还显示;Inetrnet,Explorer
  • 有关调用远程WCF服务的超时问题(Timeout Question about Invoking a Remote WCF Service)