Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在WebRole开始时清除整个Windows Azure Appfabric缓存?_Azure_Appfabric_Azure Caching - Fatal编程技术网

如何在WebRole开始时清除整个Windows Azure Appfabric缓存?

如何在WebRole开始时清除整个Windows Azure Appfabric缓存?,azure,appfabric,azure-caching,Azure,Appfabric,Azure Caching,我试图做一件可能很简单的事情,但我就是找不到答案。 我知道如何在应用程序级别删除缓存(对于网站) 但是我需要在webrole start上清除azure appfabric缓存的所有缓存 编辑:如果可以做呢?考虑Azure Asp.net共享缓存出现严重故障,还是我很笨? 这就是我陷入的情景: 我有一个WebRole,它几乎没有不同的网站 假设我所有的网站在每个根目录上都有一个default.aspx文件,带有60分钟的缓存,这是普通的,没有花哨的代码 我浏览了它们,结果几个缓存的页面被存储在

我试图做一件可能很简单的事情,但我就是找不到答案。 我知道如何在应用程序级别删除缓存(对于网站)

但是我需要在webrole start上清除azure appfabric缓存的所有缓存

编辑:如果可以做呢?考虑Azure Asp.net共享缓存出现严重故障,还是我很笨?

这就是我陷入的情景:

  • 我有一个WebRole,它几乎没有不同的网站
  • 假设我所有的网站在每个根目录上都有一个default.aspx文件,带有60分钟的缓存,这是普通的,没有花哨的代码
  • 我浏览了它们,结果几个缓存的页面被存储在appfabric缓存中60分钟
  • 请考虑取消此部署缓存中的引擎罩依赖项是在类似“E:\sitesroot\xx”的路径上创建的
  • 在此期间,我将重置Webrole或上载新部署
  • 现在请考虑我在新创建的实例中的网站有这样的路径:'F:\SITESROUND\XX’< /LI>
  • 你明白了,我的结果如下:
目录“E:\sitesroot\12”不存在。无法开始监视文件更改

System.Web.HttpException (0x80070003): Directory 'E:\sitesroot\12' does not exist. Failed to start monitoring file changes.
at System.Web.FileChangesMonitor.FindDirectoryMonitor(String dir, Boolean addIfNotFound, Boolean throwOnError)
at System.Web.FileChangesMonitor.StartMonitoringPath(String alias, FileChangeEventHandler callback, FileAttributesData& fad)
at System.Web.Caching.CacheDependency.Init(Boolean isPublic, String[] filenamesArg, String[] cachekeysArg, CacheDependency dependency, DateTime utcStart)
at System.Web.Caching.CacheDependency..ctor(Int32 dummy, String[] filenames)
at System.Web.Caching.OutputCache.HasDependencyChanged(Boolean isFragment, String depKey, String[] fileDeps, String kernelKey, String oceKey, String providerName)
 at System.Web.Caching.OutputCache.Get(String key)
 at System.Web.Caching.OutputCacheModule.OnEnter(Object source, EventArgs eventArgs)
at System.Web.HttpApplication.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
 at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)
我花了一些时间才明白这个问题可能是因为当前的appfacbric缓存依赖于具有硬路径“E:\sitesroot\”的CacheDependence。如果这条路改变了怎么办

那我该怎么办?我在这里迷路了,我试图在Global.asax应用程序_Start上清除appcache,但这似乎不起作用(我不明白为什么不起作用)

下面是我清除每个网站上缓存的代码Global.asax应用程序\u Start

公共共享子缓存清除()
将按键设置为新列表(字符串)()
'检索应用程序缓存枚举器
Dim枚举数作为IDictionaryEnumerator=HttpRuntime.Cache.GetEnumerator()
'复制缓存中当前存在的所有密钥
While枚举数.MoveNext()
添加(枚举数.Key.ToString())
结束时
'从缓存中删除每个密钥
对于i,整数=0到键。计数-1
HttpRuntime.Cache.Remove(键(i))
下一个
端接头
这应该会奏效,但似乎不会

我确实遗漏了一个荒谬的观点

编辑


我最终完全删除了appfabric的asp.net outputcache提供程序,并用appfabric编写了一个自定义缓存。非常好,azure上的代码和缓存依赖性非常简单。

我不是100%确定,但我认为这是不可能的。

嗨,我想我在azure的Asp.net“即插即用”缓存系统中发现了一个严重的错误逻辑,我将更新我的帖子。