引用的缓存不存在

时间:2013-02-07 23:05:00

标签: azure

记录 在我的开发环境中,我与运行Windows Azure模拟器的一个重复出现的错误作斗争。在我基于Azure模板创建新的解决方案和项目之前解决,以及重新安装2012年10月更新SDK。然后我不得不将所有文件复制到新项目中。在完成所有这些之前,因为我知道它可以工作,我想看看我能做些什么。

设置

  • Windows 8
  • Visual Studio 2012 Update 1
  • IIS Express 8
  • Windows Azure工具 - 2012年10月
  • Windows Azure Caching 1.8.1.0
  • ASP.NET MVC 4.0项目
  • Web角色(2个实例)
  • 缓存工作者角色(2个实例)
  • 在缓存工作角色上启用缓存并设置为专用角色(本地角色状态为:UseDevelopmentStorage = true)
  • 会话使用分布式缓存
  • 输出缓存使用分布式缓存

Web.config设置

    <sessionState mode="Custom" customProvider="AFCacheSessionStateProvider" cookieName="abc_session">
          <providers>
            <add name="AFCacheSessionStateProvider" type="Microsoft.Web.DistributedCache.DistributedCacheSessionStateStoreProvider, Microsoft.Web.DistributedCache" cacheName="default" dataCacheClientName="default" applicationName="AFCacheSessionState" />
          </providers>
        </sessionState>

<outputCache defaultProvider="AFCacheOutputCacheProvider">
        <providers>
          <add name="AFCacheOutputCacheProvider" type="Microsoft.Web.DistributedCache.DistributedCacheOutputCacheProvider, Microsoft.Web.DistributedCache" cacheName="default" dataCacheClientName="default" applicationName="AFCacheOutputCache" />
        </providers>
      </outputCache>
    </caching>

  <dataCacheClients>
    <dataCacheClient name="default">
      <autoDiscover isEnabled="true" identifier="AppNameCacheWorkerRole" />
    </dataCacheClient>
  </dataCacheClients>

错误详情

ErrorCode<ERRCA0009>:SubStatus<ES0001>:Cache referred to does not exist
[DataCacheException: ErrorCode<ERRCA0009>:SubStatus<ES0001>:Cache referred to does not exist. Contact administrator or use the Cache administration tool to create a Cache.]
   Microsoft.ApplicationServer.Caching.DataCache.ThrowException(ErrStatus errStatus, Guid trackingId, Exception responseException, Byte[][] payload, EndpointID destination) +767
   Microsoft.ApplicationServer.Caching.DataCache.ThrowException(ResponseBody respBody, EndpointID destination) +149
   Microsoft.ApplicationServer.Caching.DataCacheFactory.EstablishConnection(IEnumerable`1 servers, RequestBody request, Func`3 sendMessageDelegate, DataCacheReadyRetryPolicy retryPolicy) +967
   Microsoft.ApplicationServer.Caching.<>c__DisplayClass4.<Initialize>b__1(RequestBody req) +198
   Microsoft.ApplicationServer.Caching.SocketClientProtocol.SendReceive(IVelocityRequestPacket request, Func`2 delegate, EndpointID& destination) +121
   Microsoft.ApplicationServer.Caching.SocketClientProtocol.Initialize(IEnumerable`1 servers) +1011
   Microsoft.ApplicationServer.Caching.DataCacheFactory.GetCache(String cacheName, CreateNewCacheDelegate cacheCreationDelegate, DataCacheInitializationViaCopyDelegate initializeDelegate) +1103
   Microsoft.ApplicationServer.Caching.DataCacheFactory.GetCache(String cacheName) +131
   Microsoft.Web.DistributedCache.DataCacheFactoryWrapper.CreateDataCacheFromFactory(DataCacheFactory factory, String cacheName) +63
   Microsoft.Web.DistributedCache.CacheHelpers.RunCacheCreationHooks(CacheConnectingEventArgs fetchingEventArgs, IDataCacheFactory dataCacheFactory, Object sender, EventHandler`1 fetchingHandler, EventHandler`1 fetchedHandler) +356
   Microsoft.Web.DistributedCache.DistributedCacheOutputCacheProvider.CreateInternalProvider(IHttpRuntime httpRuntime, OutputCacheInitializationData initData, IDataCacheFactory dataCacheFactory, EventHandler`1 cacheFetching, EventHandler`1 cacheFetched) +399
   Microsoft.Web.DistributedCache.DistributedCacheOutputCacheProvider.GetInternalProvider() +315
   Microsoft.Web.DistributedCache.DistributedCacheOutputCacheProvider.Get(String key) +54
   System.Web.Caching.OutputCache.Get(String key) +80
   System.Web.Caching.OutputCacheModule.OnEnter(Object source, EventArgs eventArgs) +341
   System.Web.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +80
   System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +165

其他说明:

  • 相同的配置在部署到Azure时工作正常,因此与我的本地环境有关。
  • 当我有多个Web角色设置实例时,IIS Express崩溃了,我发现了运行Visual Studio 2010 SP1来解决的建议。我在系统上安装了VS2010,因为有一个工具(相信它是SQL)安装了它。安装SP1解决了IIS Express崩溃的问题,但随后再次出现此错误。
  • 如果我注释掉上面列出的OutputCache节点,则错误消失。
  • 如果我将缓存工作者角色从专用角色切换到同位角色,则错误消失。

2 个答案:

答案 0 :(得分:2)

与Microsoft技术支持部门联系,这似乎是一个已知问题。大多数情况下,可以通过在浏览器中强制刷新来解决它。我的成功喜忧参半。此问题的修复程序将成为下一个Azure SDK版本的一部分。

答案 1 :(得分:0)

这在我的制作中发生了很多!我首先将我的包上传到staging,并且必须等到所有实例都运行之后才能访问staging URL。有时这个错误仍然会发生,我重新启动所有实例,以便自行修复。