csharpnoob
csharpnoob

Reputation: 515

ASP.NET MVC Application Variables?

are there Application variables in ASP.NET? I want to store for all Users an Object which should be independent updated every 5 Minutes. But all users should always see last version of it. Any suggestions (C#)?

Upvotes: 2

Views: 3941

Answers (2)

pmarflee
pmarflee

Reputation: 3428

You can store application-wide data in the ASP.NET Cache.

Add your item to the cache using the Cache.Insert method. Set the sliding expiration value to a TimeSpan of 5 minutes. Write a wrapper class for accessing the object in the cache. The wrapper class can provide a method to obtain the object from the cache. This method can check whether whether the item is in the cache and load it if it isn't.

For example:

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;
    }
}

Upvotes: 3

Yuriy Faktorovich
Yuriy Faktorovich

Reputation: 68667

You can use the OutputCacheAttribute for the method in question. It has a duration property.

Upvotes: 0

Related Questions