.net 将企业库缓存从3.1升级到5.0

.net 将企业库缓存从3.1升级到5.0,.net,enterprise-library,.net,Enterprise Library,试图将EntLib从3.1升级到5.0,我在缓存方面遇到了一个奇怪的问题。我们所有与缓存相关的单元测试都将抛出: 失败:System.ArgumentException:Type未提供采用单一参数类型NameValueCollection的构造函数 我们使用的是EntLib附带的默认CacheManager,在v3中运行良好,但是当我查看Microsoft.Practices.EnterpriseLibrary.Caching.CacheManager类时,我在3.1或5.0版本中都看不到任何相

试图将EntLib从3.1升级到5.0,我在缓存方面遇到了一个奇怪的问题。我们所有与缓存相关的单元测试都将抛出:

失败:System.ArgumentException:Type未提供采用单一参数类型NameValueCollection的构造函数

我们使用的是EntLib附带的默认CacheManager,在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创建自己的包装器?

仔细检查堆栈跟踪发现,引发异常的不是缓存管理器,而是我们的自定义
IAuthorizationProvider


一旦我添加了必要的构造函数,我们的大多数单元测试都通过了。有几个仍然失败,但这似乎是由于配置和异常/错误处理方面的差异造成的。

晚了一点,但谢谢,您给我的检查stacktrace的线索帮助我解决了问题,我找到了问题的根源。:)