尝试在本地创建azure缓存实例时会出现InvalidOperationException(异常和代码如下所示)。代码正在从控制台应用程序运行。当我在azure模拟器中以worker角色运行它时,它工作正常。
是否可以使用azure缓存而无需在模拟器中运行它?
{System.Reflection.TargetInvocationException:异常已经发生 由调用目标抛出。 ---> System.InvalidOperationException:角色发现数据不可用
在Microsoft.WindowsAzure.ServiceRuntime.RoleEnvironment.get_Roles()
配置
<dataCacheClients>
<dataCacheClient name="mycache.cache.windows.net">
<autoDiscover
isEnabled="true"
identifier="mycache.cache.windows.net" />
<securityProperties mode="Message" sslEnabled="false">
<messageSecurity authorizationInfo="[mytoken]=" />
</securityProperties>
</dataCacheClient>
</dataCacheClients>
代码:
bool autoDiscover = true;
string identifier = "foo";
var cacheFactoryConfiguration = new DataCacheFactoryConfiguration
{
AutoDiscoverProperty = new DataCacheAutoDiscoverProperty(autoDiscover, identifier),
TransportProperties = new DataCacheTransportProperties { MaxBufferSize = int.MaxValue },
IsCompressionEnabled = true,
MaxConnectionsToServer = 3
};
var dataCacheFactory = new DataCacheFactory(cacheFactoryConfiguration);
答案 0 :(得分:0)
是的,但没有AutoDiscovery功能。 AutoDiscovery是角色内缓存的一项功能,需要Azure RoleEnvironment(因此会出现错误)。
// Cache client configured by settings in application configuration file.
DataCacheFactoryConfiguration config = new DataCacheFactoryConfiguration("mycache.cache.windows.net");
DataCacheFactory cacheFactory = new DataCacheFactory(config);
DataCache defaultCache = cacheFactory.GetDefaultCache();
// Put and retrieve a test object from the default cache.
defaultCache.Put("testkey", "testobject");
string strObject = (string)defaultCache.Get("testkey");
同样注意 - 我不会在Azure共享缓存上进行任何开发 - 该服务将于2014年停用 - 请参阅http://www.windowsazure.com/en-us/pricing/details/cache/