【问题标题】:ASP.NET MVC Application Variables?ASP.NET MVC 应用程序变量?
【发布时间】:2009-10-17 15:41:21
【问题描述】:

ASP.NET 中有应用程序变量吗?我想为所有用户存储一个应该每 5 分钟独立更新一次的对象。但是所有用户都应该总是看到它的最新版本。有什么建议(C#)吗?

【问题讨论】:

    标签: c# asp.net-mvc variables


    【解决方案1】:

    您可以在 ASP.NET Cache 中存储应用程序范围的数据。

    使用Cache.Insert 方法将您的项目添加到缓存中。将滑动到期值设置为 5 分钟的 TimeSpan。编写一个包装类来访问缓存中的对象。包装类可以提供从缓存中获取对象的方法。该方法可以检查item是否在缓存中,如果不在则加载。

    例如:

    public static class CacheHelper
    {
        public static MyObject Get()
        {
            MyObject obj = HttpRuntime.Cache.Get("myobject") as MyObject;
    
            if (obj == null)
            {
                // Create the object to insert into the cache
                obj = CreateObjectByWhateverMeansNecessary();
    
                HttpRuntime.Cache.Insert("myobject", obj, null, DateTime.Now.AddMinutes(5), System.Web.Caching.Cache.NoSlidingExpiration);
    
            }
            return obj;
        }
    }
    

    【讨论】:

    • @pmarflee,不应该有滑动到期。因为他希望它每 5 分钟更新一次。 “但所有用户都应该看到它的最新版本”,他说。
    • 谢谢,我将时间设置为 5 小时,但 20 分钟后对象又被创建了新对象。我做错了什么?我缓存每个用户的每个会话?或者 mvc 上的缓存什么时候消失了?
    • 最后我用 application_start() 和这些缓存方法解决了这个问题。问题是 IIS 中 Workerprocess 的生命周期,为 5 分钟。所以应用程序总是被杀死并重新启动
    【解决方案2】:

    您可以将 OutputCacheAttribute 用于相关方法。它有一个持续时间属性。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-09-22
      • 2013-12-19
      • 1970-01-01
      • 1970-01-01
      • 2012-08-03
      • 2010-09-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多