0

asp.net mvc3 アプリケーションのキャッシュに問題があります。

私のコード

using System.Web.Caching;
...
class RegularCacheProvider : ICacheProvider
{
    Cache cache ;

    public object Get(string name)
    {
        return cache[name];
    }

    public void Set(string name, object value)
    {
        cache.Insert(name, value);
    }

    public void Unset(string name)
    {
        cache.Remove(name);
    }
}

そして、私はそれに値を与えるためにシングルトンを使用します:

School schoolSettings = (School)CacheProviderFactory.Cache.Get("SchoolSettings");
            if (schoolSettings == null)
            {
                CacheProviderFactory.Cache.Set("SchoolSettings", someObject);
            }

したがって、最初の使用では機能せず、エラーcache[name]がnullになります。

私が間違っていることは何ですか?

どんな助けでも大歓迎です。

4

4 に答える 4

2

値を指定したことは一度もありません...そして、通常のWeb キャッシュを分離したい場合は、おそらく最善の策ではないcacheことに注意してください。多分

MemoryCache cache = new MemoryCache(); 
于 2012-08-07T13:01:27.303 に答える
1

HttpRuntime.Cache の使用についてはどうでしょうか。この例では 1 時間キャッシュしますか?

HttpRuntime.Cache.Add("SchoolSettings", someObject, null, DateTime.Now.AddHours(1),
                       System.Web.Caching.Cache.NoSlidingExpiration,
                       System.Web.Caching.CacheItemPriority.Normal, null);
于 2012-08-07T12:56:25.463 に答える
0

値を確認するコードを次のように変更します。

学校 schoolSettings = CacheProviderFactory.Cache.Get("SchoolSettings") as (学校);

オブジェクトをキャストするのではなく、「as」を使用していることに注意してください。値がnullの場合、キャストは爆発しますが、「as」は期待どおりのnull値を提供します。

于 2012-08-07T13:01:35.370 に答える