尝试获取类型的ICacheManager,实例激活出错密钥QUOT;缓存管理器"密钥、管理器、缓存、实例

2023-09-03 01:26:10 作者:沐子

我似乎已经在这里碰了壁,并将AP preciate任何人一些帮助,是谁能够在这一个。我不完全知道什么是错误信息如下手段。我使用的企业模式服务的缓存块,但我一直在下面的问题上运行。我下载了最新版本,并试图通过对这一问题加强,但我似乎无法针确切的问题,我需要帮助,请。在此先感谢

  WorldBank.Service.Business.UnitTest.TopicsManagerTest.Call_Children_out_of_schoolTest抛出异常测试方法:
Microsoft.P​​ractices.ServiceLocation.Activati​​onException:尝试获取类型的ICacheManager,关键的缓存管理器 - &GT的实例激活时发生错误; Microsoft.P​​ractices.Unity.ResolutionFailedException:分辨率依赖失败,TYPE =Microsoft.P​​ractices.EnterpriseLibrary.Caching.ICacheManager,名字=缓存管理器。
而解决:当发生异常。
例外的是:出现InvalidOperationException  - 当前类型,Microsoft.P​​ractices.EnterpriseLibrary.Caching.ICacheManager,是一个接口,并且不能构成。是否缺少类型映射?
-----------------------------------------------
在异常时,该容器是:

  解决Microsoft.P​​ractices.EnterpriseLibrary.Caching.ICacheManager,WuCache
 ---> System.InvalidOperationException:当前类型,Microsoft.P​​ractices.EnterpriseLibrary.Caching.ICacheManager,是一个接口,并且不能构成。是否缺少类型映射?


Microsoft.Practices.ObjectBuilder2.DynamicMethodConstructorStrategy.ThrowForAttemptingToConstructInterface(IBuilderContext上下文)的e:\Builds\Unity\UnityTemp\Compile\Unity\Unity\Src\ObjectBuilder\Strategies\BuildPlan\DynamicMethod\Creation\DynamicMethodConstructorStrategy.cs:线209
BuildUp_Microsoft.P​​ractices.EnterpriseLibrary.Caching.ICacheManager(IBuilderContext)
Microsoft.P​​ractices.ObjectBuilder2.DynamicMethodBuildPlan.BuildUp(IBuilderContext上下文)的e:\Builds\Unity\UnityTemp\Compile\Unity\Unity\Src\ObjectBuilder\Strategies\BuildPlan\DynamicMethod\DynamicMethodBuildPlan.cs:行37
Microsoft.P​​ractices.ObjectBuilder2.BuildPlanStrategy。preBuildUp(IBuilderContext上下文)的e:\Builds\Unity\UnityTemp\Compile\Unity\Unity\Src\ObjectBuilder\Strategies\BuildPlan\BuildPlanStrategy.cs:第43行
Microsoft.P​​ractices.ObjectBuilder2.StrategyChain.ExecuteBuildUp(IBuilderContext上下文)在E:\构建\团结\ UnityTemp \编译\团结\团结\ SRC \ ObjectBuilder的\策略\ StrategyChain.cs:行110
Microsoft.P​​ractices.Unity.UnityContainer.DoBuildUp(T型,现有的对象,字符串名称,IEnumerable`1 resolverOverrides)在E:\构建\团结\ UnityTemp \编译\团结\团结\ SRC \ UnityContainer.cs:行511
Microsoft.P​​ractices.Unity.UnityContainer.DoBuildUp(T型,现有的对象,字符串名称,IEnumerable`1 resolverOverrides)在E:\构建\团结\ UnityTemp \编译\团结\团结\ SRC \ UnityContainer.cs:行515
Microsoft.P​​ractices.Unity.UnityContainer.Resolve(T型,字符串名称,ResolverOverride [] resolverOverrides)在E:\构建\团结\ UnityTemp \编译\团结\团结\ SRC \ UnityContainer.cs:行173
Microsoft.P​​ractices.Unity.UnityServiceLocator.DoGetInstance(类型的serviceType,字符串键)在E:\构建\团结\ UnityTemp \编译\团结\团结\ SRC \ UnityServiceLocator.cs:行64
Microsoft.P​​ractices.ServiceLocation.ServiceLocatorImplBase.GetInstance(类型的serviceType,字符串键) c:\Home\Chris\Projects\CommonServiceLocator\main\Microsoft.Practices.ServiceLocation\ServiceLocatorImplBase.cs:行49
Microsoft.P​​ractices.ServiceLocation.ServiceLocatorImplBase.GetInstance(类型的serviceType,字符串键) c:\Home\Chris\Projects\CommonServiceLocator\main\Microsoft.Practices.ServiceLocation\ServiceLocatorImplBase.cs:第53行
Microsoft.P​​ractices.ServiceLocation.ServiceLocatorImplBase.GetInstance [TService](字符串键) c:\Home\Chris\Projects\CommonServiceLocator\main\Microsoft.Practices.ServiceLocation\ServiceLocatorImplBase.cs:线103
Microsoft.P​​ractices.EnterpriseLibrary.Caching.CacheFactory.InnerGetCacheManager(字符串cacheManagerName)在E:\构建\ EntLib \最新\来源\块\缓存\ SRC \缓存\ CacheFactory.cs:行66
Microsoft.P​​ractices.EnterpriseLibrary.Caching.CacheFactory.GetCacheManager(字符串cacheManagerName)在E:\构建\ EntLib \最新\来源\块\缓存\ SRC \缓存\ CacheFactory.cs:行53
WorldBank.Service.Business.ResponseManager.Get_w_Utility()在C:\ SOOfficialPiece \ WorldBank.Service.Business \ ResponseManager.cs:行42
WorldBank.Service.Business.ResponseManager..ctor()在C:\ SOOfficialPiece \ WorldBank.Service.Business \ ResponseManager.cs:行34
WorldBank.Service.Business.ResponseManager.getResponseObjectJSON(的Int32 perpage,对象的结果,布尔doDee pretrieval)在C:\ SOOfficialPiece \ WorldBank.Service.Business \ ResponseManager.cs:行68
System.Dynamic.UpdateDelegates.UpdateAndExecute4 [T0,T1,T2,T3 TRET](调用点现场,T0为arg0,T1的arg1,arg2的T2,T3 ARG3)
WorldBankBusiness.Topics.TopicsManager.Call_Children_out_of_school(PersonType persontype,EnrollmentType enrollmenttype,字符串国code)在C:\ SOOfficialPiece \ WorldBank.Service.Business \ TopicsManager.cs:行39
WorldBank.Service.Business.UnitTest.TopicsManagerTest.Call_Children_out_of_schoolTest()在C:\ SOOfficialPiece \ WorldBank.Service.Business.UnitTest \ TopicsManagerTest.cs:行88
 

解决方案

缓存应用程序块,需要一些配置信息是present在app / web.config中也可以使用之前(AFAIK,遗憾的是它是艰难的找到文件另有说明)。如果没有该配置​​信息,下面code将导致抛出相同的异常,你所看到的:

  VAR厘米= CacheFactory.GetCacheManager(MyCacheManager);
 

为了获得的CacheManager ,你需要定义的CacheManager 在你的app.config或网页。配置:

 <结构>
    < configSections>
        <节名称=cachingConfiguration
                 TYPE =Microsoft.P​​ractices.EnterpriseLibrary.Caching.Configuration.CacheManagerSettings,Microsoft.P​​ractices.EnterpriseLibrary.Caching,版本= 5.0.414.0,文化=中性公钥= 31bf3856ad364e35requirePermission =真/>
    < / configSections>
    < cachingConfiguration defaultCacheManager =MyCacheManager>
        < cacheManagers>
           <添加名称=MyCacheManagerTYPE =Microsoft.P​​ractices.EnterpriseLibrary.Caching.CacheManager,Microsoft.P​​ractices.EnterpriseLibrary.Caching,版本= 5.0.414.0,文化=中性公钥= 31bf3856ad364e35
                expirationPollFrequencyInSeconds =60
                maximumElementsInCacheBeforeScavenging =50000
                numberToRemoveWhenScavenging =1000
                backingStoreName =NullBackingStore/>
        < / cacheManagers>
        < backingStores>
            <加上TYPE =Microsoft.P​​ractices.EnterpriseLibrary.Caching.BackingStoreImplementations.NullBackingStore,Microsoft.P​​ractices.EnterpriseLibrary.Caching,版本= 5.0.414.0,文化=中性公钥= 31bf3856ad364e35
                 NAME =NullBackingStore/>
        < / backingStores>
    < / cachingConfiguration>
< /结构>
 
win10系统优化软件 Windows 10 Manager下载 v3.1.2官方版

一旦你添加的配置值,你应该能够得到一个有效的的CacheManager CacheFactory 。该帖子也有一些更多的信息,可以帮助你。

值得注意的是,如果你使用的是.NET 4.0,对于非web应用程序可以使用MemoryCache (在 System.Runtime.Caching 命名空间),它提供了类似的功能,但并不需要所有这些配置。而对于网络应用程序,你当然可以使用缓存类 System.Web.Caching

I seem to have hit a wall here and would appreciate some help from anyone who is able to on this one. I am not exactly sure what the error message below means. I am using the Caching Block of Enterprise Pattern Services but I keep running in to the problem below. I downloaded the latest version and tried stepping through to the issue but I can't seem to pin the exact problem and I need help please. Thanks in advance

Test method WorldBank.Service.Business.UnitTest.TopicsManagerTest.Call_Children_out_of_schoolTest threw exception: 
Microsoft.Practices.ServiceLocation.ActivationException: Activation error occured while trying to get instance of type ICacheManager, key "Cache Manager" ---> Microsoft.Practices.Unity.ResolutionFailedException: Resolution of the dependency failed, type = "Microsoft.Practices.EnterpriseLibrary.Caching.ICacheManager", name = "Cache Manager".
Exception occurred while: while resolving.
Exception is: InvalidOperationException - The current type, Microsoft.Practices.EnterpriseLibrary.Caching.ICacheManager, is an interface and cannot be constructed. Are you missing a type mapping?
-----------------------------------------------
At the time of the exception, the container was:

  Resolving Microsoft.Practices.EnterpriseLibrary.Caching.ICacheManager,WuCache
 ---> System.InvalidOperationException: The current type, Microsoft.Practices.EnterpriseLibrary.Caching.ICacheManager, is an interface and cannot be constructed. Are you missing a type mapping?


Microsoft.Practices.ObjectBuilder2.DynamicMethodConstructorStrategy.ThrowForAttemptingToConstructInterface(IBuilderContext context) in e:\Builds\Unity\UnityTemp\Compile\Unity\Unity\Src\ObjectBuilder\Strategies\BuildPlan\DynamicMethod\Creation\DynamicMethodConstructorStrategy.cs: line 209
BuildUp_Microsoft.Practices.EnterpriseLibrary.Caching.ICacheManager(IBuilderContext )
Microsoft.Practices.ObjectBuilder2.DynamicMethodBuildPlan.BuildUp(IBuilderContext context) in e:\Builds\Unity\UnityTemp\Compile\Unity\Unity\Src\ObjectBuilder\Strategies\BuildPlan\DynamicMethod\DynamicMethodBuildPlan.cs: line 37
Microsoft.Practices.ObjectBuilder2.BuildPlanStrategy.PreBuildUp(IBuilderContext context) in e:\Builds\Unity\UnityTemp\Compile\Unity\Unity\Src\ObjectBuilder\Strategies\BuildPlan\BuildPlanStrategy.cs: line 43
Microsoft.Practices.ObjectBuilder2.StrategyChain.ExecuteBuildUp(IBuilderContext context) in e:\Builds\Unity\UnityTemp\Compile\Unity\Unity\Src\ObjectBuilder\Strategies\StrategyChain.cs: line 110
Microsoft.Practices.Unity.UnityContainer.DoBuildUp(Type t, Object existing, String name, IEnumerable`1 resolverOverrides) in e:\Builds\Unity\UnityTemp\Compile\Unity\Unity\Src\UnityContainer.cs: line 511
Microsoft.Practices.Unity.UnityContainer.DoBuildUp(Type t, Object existing, String name, IEnumerable`1 resolverOverrides) in e:\Builds\Unity\UnityTemp\Compile\Unity\Unity\Src\UnityContainer.cs: line 515
Microsoft.Practices.Unity.UnityContainer.Resolve(Type t, String name, ResolverOverride[] resolverOverrides) in e:\Builds\Unity\UnityTemp\Compile\Unity\Unity\Src\UnityContainer.cs: line 173
Microsoft.Practices.Unity.UnityServiceLocator.DoGetInstance(Type serviceType, String key) in e:\Builds\Unity\UnityTemp\Compile\Unity\Unity\Src\UnityServiceLocator.cs: line 64
Microsoft.Practices.ServiceLocation.ServiceLocatorImplBase.GetInstance(Type serviceType, String key) in c:\Home\Chris\Projects\CommonServiceLocator\main\Microsoft.Practices.ServiceLocation\ServiceLocatorImplBase.cs: line 49
Microsoft.Practices.ServiceLocation.ServiceLocatorImplBase.GetInstance(Type serviceType, String key) in c:\Home\Chris\Projects\CommonServiceLocator\main\Microsoft.Practices.ServiceLocation\ServiceLocatorImplBase.cs: line 53
Microsoft.Practices.ServiceLocation.ServiceLocatorImplBase.GetInstance[TService](String key) in c:\Home\Chris\Projects\CommonServiceLocator\main\Microsoft.Practices.ServiceLocation\ServiceLocatorImplBase.cs: line 103
Microsoft.Practices.EnterpriseLibrary.Caching.CacheFactory.InnerGetCacheManager(String cacheManagerName) in e:\Builds\EntLib\Latest\Source\Blocks\Caching\Src\Caching\CacheFactory.cs: line 66
Microsoft.Practices.EnterpriseLibrary.Caching.CacheFactory.GetCacheManager(String cacheManagerName) in e:\Builds\EntLib\Latest\Source\Blocks\Caching\Src\Caching\CacheFactory.cs: line 53
WorldBank.Service.Business.ResponseManager.Get_w_Utility() in C:\SOOfficialPiece\WorldBank.Service.Business\ResponseManager.cs: line 42
WorldBank.Service.Business.ResponseManager..ctor() in C:\SOOfficialPiece\WorldBank.Service.Business\ResponseManager.cs: line 34
WorldBank.Service.Business.ResponseManager.getResponseObjectJSON(Int32 perpage, Object results, Boolean doDeepRetrieval) in C:\SOOfficialPiece\WorldBank.Service.Business\ResponseManager.cs: line 68
System.Dynamic.UpdateDelegates.UpdateAndExecute4[T0,T1,T2,T3,TRet](CallSite site, T0 arg0, T1 arg1, T2 arg2, T3 arg3)
WorldBankBusiness.Topics.TopicsManager.Call_Children_out_of_school(PersonType persontype, EnrollmentType enrollmenttype, String countrycode) in C:\SOOfficialPiece\WorldBank.Service.Business\TopicsManager.cs: line 39
WorldBank.Service.Business.UnitTest.TopicsManagerTest.Call_Children_out_of_schoolTest() in C:\SOOfficialPiece\WorldBank.Service.Business.UnitTest\TopicsManagerTest.cs: line 88

解决方案

The Caching Application Block requires some configuration information to be present in the app/web.config before it can be used (AFAIK, unfortunately it is tough to find documentation stating otherwise). Without that configuration info, the following code will cause that same exception to be thrown as you are seeing:

var cm = CacheFactory.GetCacheManager("MyCacheManager");

In order to get a CacheManager, you need to define the CacheManager in your app.config or web.config:

<configuration>
    <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="MyCacheManager">
        <cacheManagers>
           <add name="MyCacheManager" type="Microsoft.Practices.EnterpriseLibrary.Caching.CacheManager, Microsoft.Practices.EnterpriseLibrary.Caching, Version=5.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" 
                expirationPollFrequencyInSeconds="60" 
                maximumElementsInCacheBeforeScavenging="50000" 
                numberToRemoveWhenScavenging="1000"  
                backingStoreName="NullBackingStore" />
        </cacheManagers>
        <backingStores>
            <add type="Microsoft.Practices.EnterpriseLibrary.Caching.BackingStoreImplementations.NullBackingStore, Microsoft.Practices.EnterpriseLibrary.Caching, Version=5.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" 
                 name="NullBackingStore" />
        </backingStores>
    </cachingConfiguration>
</configuration>

Once you add the configuration values, you should be able to get a valid CacheManager from the CacheFactory. The post also has some more information that might help you.

It is worth noting that if you are using .NET 4.0, for non web apps you can use MemoryCache (in the System.Runtime.Caching namespace) which provides similar functionality but does not require all of this configuration. And for web apps you can of course use the Cache class in System.Web.Caching.

 
精彩推荐
图片推荐