0

EntLibを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用に独自のラッパーを作成することが期待されていますか?

4

1 に答える 1

1

スタックトレースを詳しく調べると、キャッシュマネージャーが例外をスローしているのではなく、カスタムがスローされていることがわかりIAuthorizationProviderました。

必要なコンストラクターを追加すると、ほとんどの単体テストに合格します。まだ失敗しているものもありますが、それは構成と例外/エラー処理の違いが原因のようです。

于 2013-01-14T02:09:21.523 に答える