重新启动Azure Webjob时静态变量不会重置

时间:2018-07-10 15:04:44

标签: c# azure azure-webjobs azure-web-app-service

我今天观察到一个奇怪的情况(对我来说至少很奇怪)。我们实现了一个内存中缓存,该缓存存储了一些键值对,并且这些键值对在天蓝色的webjob中使用。

我们观察到的是,即使我们重新启动Webjob或什至在其下运行该作业的应用程序服务,此内存高速缓存也不会重置并且值将保留。仅当我们重新部署webjob时,此缓存才会重置。缓存变量的声明如下所示。

protected volatile static Dictionary<string, object> Cache = new Dictionary<string, object>();

它正被暴露给其他类,如下所示

 public static class CacheFactory
    {
        static bool isInitialized;
        static bool useDefault = true;
        static readonly object lockObject = new object();

        public static ICache Cache
        {
            get
            {
                if (!isInitialized)
                {
                    lock (lockObject)
                    {
                        useDefault = !Factory.Contains<ICache>();
                    }
                    isInitialized = true;
                }
                return useDefault ? new DictionaryCache() : Factory.Create<ICache>();
            }
        }


    }

只有在Factory中注册的ICache实现才是DictionaryCache。

0 个答案:

没有答案