嘗試將EntLib從3.1升級到5.0,並且遇到了緩存的奇怪問題。我們所有的緩存相關的單元測試拋出:將企業庫緩存從3.1升級到5.0
failed: System.ArgumentException : Type does not provide a constructor taking a single parameter type of NameValueCollection
我們使用隨EntLib默認CacheManger,正常工作與v3的,但是當我看Microsoft.Practices.EnterpriseLibrary.Caching.CacheManager
類我看不到任何相關3.1或5.0版本的構造函數?
[ConfigurationNameMapper(typeof(CacheManagerDataRetriever)), CustomFactory(typeof(CacheManagerCustomFactory))]
public class CacheManager : IDisposable
{
// Methods
internal CacheManager(Cache realCache, BackgroundScheduler scheduler, ExpirationPollTimer pollTimer)
{
this.realCache = realCache;
this.scheduler = scheduler;
this.pollTimer = pollTimer;
}
這裏是我們的配置,這是我從EntLib配置工具創建的:
<cachingConfiguration defaultCacheManager="Whatever">
<cacheManagers>
<add name="Whatever" type="Microsoft.Practices.EnterpriseLibrary.Caching.CacheManager, Microsoft.Practices.EnterpriseLibrary.Caching, Version=5.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
expirationPollFrequencyInSeconds="60" maximumElementsInCacheBeforeScavenging="1000"
numberToRemoveWhenScavenging="10" backingStoreName="Null Storage" />
</cacheManagers>
我有一個看看遷移指南,但並沒有表現出任何東西。
我們現在是否期望爲CacheManager創建自己的包裝?
有一點晚了,但謝謝你給我檢查堆棧跟蹤幫助我的線索,我發現問題的根源。 :) – Jannik