2011-08-26 3 views
2

모두 새 ObjectCache 개체를 사용하여 서버 쪽 캐시를 만들려고합니다. 어떤 이유를 들어, 예외를 던지고 다음 ...ObjectCache에 일관되게 설정 한 후에 항목이 일시적으로 포함되지 않음

_cache.Set(CacheKey.LOCATIONS, cachedLocations, DateTimeOffset.Now.AddHours(2)); 
        if (!_cache.Contains(CacheKey.LOCATIONS)) 
         throw new Exception("Did not add location to the cache."); 

_cache는

private ObjectCache _cache = MemoryCache.Default; 

이 예외는 캐시 인을 때마다 occures ... 서비스 계층에 다음과 같은 방법으로 인스턴스화 처음 제외하고는 예외는 코드에 표시된 것입니다 ... "캐시에 위치를 추가하지 않았습니다."

--- 메모 편집. ObjectCache는 정적이지만 MemoryCache.Default는 정적이기 때문에 정적 일 필요는 없습니다.

+0

다른 스레드에서 설정이 가능합니까? 기다렸다가 다시 확인하면 어떨까요? –

+0

위의 코드는 {...} 자물쇠가있어 가능한 것이 가능하지 않습니다. – Onosa

+0

그건 아무것도 도움이되지 않습니다. lock (_cache) {}을 사용하는 경우 일 수 있습니다. 시도하기 전에 기다리면서이 이론을 테스트 했습니까? –

답변

1

Add() 메서드를 사용하여 캐시에 새 항목을 만들어야합니다. Set() 메서드에 키가 이미 있습니다.