2009-06-08 3 views
0

Это правильный способ инициализации объекта статического кеша в веб-службе?Статические кеши в веб-сервисах

public class someclass{ 
private static Cache cache; 
static someclass() 
    { 
     cache = HttpContext.Current.Cache; 
    } 
} 

Дополнительная информация:

Seems like I receive more then one cache object from webservice. It creates a new request that only lasts for the duration of that call. If I move to a different machine, it creates a new request (and I think a webservice) object that returns new cache. (because I can see two different caches being returned in the sniffer) By forcing it to be static I was hoping to have only one. However no avail. doesn't work. 

ответ

0

Это выглядит хорошо для меня - особенно если вы собираетесь обернуть Current.Context и выставить свойства кэшированных значений, как это:

public static class CacheManager 
{ 
    public static Boolean Foo 
    { 
     get { return (Boolean)HttpContext.Current.Cache["Foo"] } 
     set { HttpContext.Current.Cache["Foo"] = value; } 
    } 

    // etc... 
} 

Вы надеваете 'действительно нужно создать частную ссылку на текущий кеш, если только вы этого не делаете, чтобы сохранить при вводе. Также обратите внимание, что я сделал класс static.

0

Почему бы просто не получить доступ к нему напрямую, используя HTTPContext.Current.Cache?

+0

Кажется, что я получаю больше одного объекта кеша из webservice. создает новый запрос, который длится только в течение этого вызова. Если я перейду на другой компьютер, он создаст новый запрос (и я думаю, что это веб-сервис), который возвращает новый кеш. Заставляя его быть статичным, я надеялся, что у меня будет только один. Однако нет. – ra170

+0

Тогда с вашей машиной что-то не так. Вы задаете значения тайм-аута для элементов в кеше? У вашей машины только небольшой объем оперативной памяти? – RichardOD

Смежные вопросы