使用 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>
好,太棒了。我将 [cluster role name] 替换为 webrole 的名称,例如“helloworld.web”。现在,当我创建 DataCacheFactory 或 DataCache 对象时:
_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,我将它移到 Global.asax 中的 Application_Start 中,它似乎正在工作。
Sandrino 解释了为什么会这样:https ://stackoverflow.com/a/11886136/1374935