实施蔚蓝同位缓存(Implement azure colocated caching)

2019-06-26 22:03发布

使用VS2012我添加了来自WebRole属性缓存选项卡缓存功能。 其中,它产生的web.config中的以下XML:

  <dataCacheClients>   
     <tracing sinkType="DiagnosticSink" traceLevel="Error" />
     <dataCacheClient name="default">
         <autoDiscover isEnabled="true"  identifier="[cluster role name]"/>
         <!-- <localCache isEnabled="true" sync="TimeoutBased" objectCount="100000" ttlValue="300" /> -->
     </dataCacheClient> 
    </dataCacheClients>

好,太棒了。 我取代了[集群角色名]以webrole的名字,说:“helloworld.web。” 现在,当我创建DataCacheFactory或数据高速缓存的对象:

  _dataCacheFactory = new DataCacheFactory();
    _defaultCache = _dataCacheFactory.GetDefaultCache();

    //Or, just this line
    _defaultCache = new DataCache(@"default");

我得到以下错误:

Microsoft.ApplicationServer.Caching.DataCacheException was unhandled
  HelpLink=http://go.microsoft.com/fwlink/?LinkId=164049
  HResult=-2146233088
  Message=ErrorCode<ERRCA0021>:SubStatus<ES0001>:Server collection cannot be empty.
  Source=Microsoft.ApplicationServer.Caching.Client
  ErrorCode=21
  SubStatus=-1

Some notes: 
IDE: VS2012,
Framework: 4.0
AzureSDK: June2012
Local dev machine

我在想什么?

编辑

我得到它的工作!

我创建的WebRole OnStart方法的DataCacheFactory,我把它交给的Application_Start在Global.asax中,它似乎是工作。

Sandrino解释了为什么是这样的话: https://stackoverflow.com/a/11886136/1374935

Answer 1:

在你的问题你谈到加入XML的web.config文件 ,这适用于你的Web角色被托管的Web应用程序(这就是为什么代码在Application_Start方法,使用它时有效)。

但是你要知道,在WebRole.cs代码在不同的进程中运行(以前更挑动Web应用程序)。 这就是为什么它不能从你的web.config读取,这就是为什么它似乎没有配置的服务器的原因。

为了使该代码也从WebRole.cs工作,你就需要添加XML的配置文件用于运行代码的过程。 您的代码在WaIISHost.exe进程中运行,所以你需要创建一个新的配置文件WaIISHost.exe.config,在这个文件中添加XML和更改复制到输出目录属性,用于文件“一直拷贝”。

了解更多关于这个WaIISHost.exe过程这里: 新的全功能IIS:从托管Web核心差异



Answer 2:

我得到它的工作!

我创建的WebRole OnStart方法的DataCacheFactory,我把它交给的Application_Start在Global.asax中,它似乎是工作。



Answer 3:

是。 步骤尽管各种配置,我做我的故障排除过程中重新安装Azure工具为好。

还有这是上面提到的Web.config文件,但在你的服务定义,确保它有一个路线:

<Import moduleName="Caching" />

这是我的根的问题,但后来改变了几乎所有曾经试图得到它的工作。 此外,当我看着Web角色,缓存选项卡不见了这是固定通过重新安装Azure工具(我做了清理旧的可能会或可能不会有帮助)。 我通过Azure的网站发起的例子它,而不是上面有什么。

DataCache AgencyCache = new DataCache("AgencyDataValidation");

记住导入:

using Microsoft.ApplicationServer.Caching;


文章来源: Implement azure colocated caching