Я пытаюсь разобраться со службой друзей. В основном это приводит к ошибке, как только я запускаю его в конструкторе. Вот фрагменты кода.
public class DefaultCacheManager : ICacheManager
{
private readonly Microsoft.Practices.EnterpriseLibrary.Caching.ICacheManager _cacheManager;
public DefaultCacheManager()
{
//Code blows here
_cacheManager = CacheFactory.GetCacheManager();
}
Ошибка, которую я получаю, приведена ниже.
Необработанное исключение: System.TypeInitializationException: инициализатор типа для «Test.TypeManagement» вызвал исключение. ---> Microsoft.Practices.Unity.ResolutionFailedException: Разрешение зависимости не удалось, тип = "Test.DefaultCacheManager", имя = "CacheManager". Исключение возникло при: вызове конструктора Test.DefaultCacheManager(). Исключение: TypeLoadException — не удалось загрузить тип «Microsoft.Practices.EnterpriseLibrary.Common.Configuration.EnterpriseLibraryContainer» из сборки «Microsoft.Practices.EnterpriseLibrary.Common, версия = 6.0.0.0, культура = нейтральная, PublicKeyToken = 31bf3856ad364e35». ----------------------------------------------- В это время исключения, контейнер был:
Разрешение Test.DefaultCacheManager, CacheManager Вызов конструктора Test.DefaultCacheManager() ---> System.TypeLoadException: не удалось загрузить тип «Microsoft.Practices.EnterpriseLibrary.Common.Configuration.EnterpriseLibraryContainer» из сборки «Microsoft.Practices.EnterpriseLibrary.Common, Version =6.0.0.0, культура=нейтральная, PublicKeyToken=31bf3856ad364e35'.
в Microsoft.Practices.EnterpriseLibrary.Caching.CacheFactory.InnerGetCacheManager(String cacheManagerName) в Test.DefaultCacheManager..ctor() в c:\Test\CacheManager. cs: строка 12 в lambda_method(Closure , IBuilderContext ) в Microsoft.Practices.ObjectBuilder2.DynamicBuildPlanGenerationContext.‹>c__DisplayClass1.b__0(контекст IBuilderContext) в Microsoft.Practices.ObjectBuilder2.BuildPlanStrategy.PreBuildUp(контекст IBuilderContext) в Microsoft.Practices.ObjectBuilder2. StrategyChain.ExecuteBuildUp (контекст IBuilderContext) в Microsoft.Practices.Unity.UnityContainer.DoBuild Up (тип t, существующий объект, имя строки, IEnumerable1 resolverOverrides)
1 resolverOverrides) в Microsoft.Practices.Unity.UnityContainer.DoBuildUp (тип t, имя строки, IEnumerable`1 resolverOverrides) в Microsoft.Practices.Unity.UnityContainerExtensions.Resolve[T]( Контейнер IUnityContainer, имя String, ResolverOverride[] переопределяет) в Test.TypeManagement.get_CacheManager() в c:\Test\TypeManagement.cs:строка 56 в Test.TypeManagement..cctor() в c:\Test\TypeManagement.cs: строка 36 --- Конец внутренней трассировки стека исключений --- в Test.TypeManagement.get_ServiceHost() в Test.ThreadManager.Start() в c:\Test\ThreadManager.cs:строка 19 в Test.Program.Main(String [] аргументы) в c:\Test\Program.cs:строка 14
--- End of inner exception stack trace --- at Microsoft.Practices.Unity.UnityContainer.DoBuildUp(Type t, Object existing, String name, IEnumerable
Любая помощь и направление будут приветствоваться.
Конфигурация
<configSections>
<section name="cachingConfiguration" type="Microsoft.Practices.EnterpriseLibrary.Caching.Configuration.CacheManagerSettings, Microsoft.Practices.EnterpriseLibrary.Caching, Version=5.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" requirePermission="true" />
</configSections>
<cachingConfiguration defaultCacheManager="Cache Manager">
<cacheManagers>
<add expirationPollFrequencyInSeconds="60" maximumElementsInCacheBeforeScavenging="1000" numberToRemoveWhenScavenging="10" backingStoreName="Data Cache Storage" name="Cache Manager" />
</cacheManagers>
<backingStores>
<add databaseInstanceName="CachingStaging" partitionName="CS" encryptionProviderName="" type="Microsoft.Practices.EnterpriseLibrary.Caching.Database.DataBackingStore, Microsoft.Practices.EnterpriseLibrary.Caching.Database, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null" name="Data Cache Storage" />
</backingStores>
</cachingConfiguration>
Microsoft.Practices.EnterpriseLibrary.Common, Version=6.0.0.0
. В EntLib 6EnterpriseLibraryContainer
было удалено, поэтому ошибка имеет смысл. Вы ссылаетесь на сборки EntLib6? Ключ в том, чтобы разобраться, какие версии сборок развернуты и загружены кодом, и убедиться, что загружены сборки версии 5 (если это то, что вы хотите). - person Randy supports Monica   schedule 16.09.2014