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
Caching Azure appfabric缓存作为多个webroles中分布式outputcache的提供程序引发错误”;无法开始监视文件更改";_Caching_Azure_Azure Appfabric - Fatal编程技术网

Caching Azure appfabric缓存作为多个webroles中分布式outputcache的提供程序引发错误”;无法开始监视文件更改";

Caching Azure appfabric缓存作为多个webroles中分布式outputcache的提供程序引发错误”;无法开始监视文件更改";,caching,azure,azure-appfabric,Caching,Azure,Azure Appfabric,晶莹剔透: 第一步 在webconfig中,使用appfabric缓存提供程序为outputcache创建一个webrole,其中包含几个带有default.aspx文件和普通规则的网站,并使用提供的代码链接到azure中的缓存订阅 只使用webrole的一个实例,启动页面,更改页面,重新加载几次,就可以正常工作 步骤2 现在增加到此WebRole的2个或更多实例 这是我的问题,在客户端重新加载default.aspx页面,现在根据loadbalancer将引导您的请求的Webrole,您

晶莹剔透:

第一步

  • 在webconfig中,使用appfabric缓存提供程序为outputcache创建一个webrole,其中包含几个带有default.aspx文件和普通规则的网站,并使用提供的代码链接到azure中的缓存订阅

  • 只使用webrole的一个实例,启动页面,更改页面,重新加载几次,就可以正常工作

步骤2

  • 现在增加到此WebRole的2个或更多实例

  • 这是我的问题,在客户端重新加载default.aspx页面,现在根据loadbalancer将引导您的请求的Webrole,您可能会得到System.Web.Caching.CacheDependency错误,因为分布式缓存中缓存的default.aspx似乎基于文件监视依赖性,default.aspx页面的硬路径,如“E:\sitesroot\2\”。但是,在Webrole的其他实例上,您可能有(并且确实有)F:\sitesroot\2\

因此它引发了一个错误:

System.Web.HttpException(0x80070003):目录“E:\sitesroot\2”不存在。无法开始监视文件更改

一周以来我一直在努力解决这个问题,我不明白,如果有人知道在多个webroles实例上实现分布式outputcache的方法,请分享你的解决方案

编辑


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

我最终完全放弃了appfabric的asp.net outputcache提供程序,并使用appfabric编写了一个自定义缓存。工作很好,azure上的代码行很少,缓存依赖性也很简单。

愚蠢的问题,但为什么要将outputcache放在共享缓存中?为什么不在本地计算机上缓存?为什么我要将输出缓存放在共享缓存中?因为这是蔚蓝!我有多个webroles实例,所以基本上每个webrole一个缓存不能提供从一个请求到另一个请求的相同结果,也不是解决方案。
  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)