为什么私有静态变量在某些时候变为空,我该怎么办才能解决?

时间:2016-03-06 13:06:55

标签: asp.net-mvc c#-4.0 google-api

一张图片胜过千言万语:

enter image description here

首页加载时,结果不为空,但在某些时候,从Javascript调用Gmail操作后,会变为空(之后)这10分钟的间隔呼叫)。它被声明为私有静态,在Index操作中初始化,并且应该始终处于活动状态(非空)。

我设法通过让应用程序在调试模式下运行几个小时来捕获它。

谢谢。

2 个答案:

答案 0 :(得分:0)

为什么不在Gmail()函数调用中保存取消令牌并重新创建“结果”实例?

私人取消令牌令牌=令牌; (在索引电话上)

public ActionResult Gmail(){   result = new Authresult(token);   ... }

答案 1 :(得分:0)

要首先诊断问题,请仔细检查您是否正在访问初始化的同一AppDomain中的变量 - 要检查这一点,您可以添加一些日志记录。这可能是一个不同的AppDomain,因为某些事件触发了IIS AppDomain池的回收。 如果是这种情况,那么您有两个选择:

  • 使用其他机制存储状态或
  • 使用空检查按需进行延迟初始化,因此可以在每次需要时初始化该值