C# 在本地使用azure缓存时出现InvalidOperationException

C# 在本地使用azure缓存时出现InvalidOperationException,c#,azure,azure-caching,C#,Azure,Azure Caching,尝试在本地创建azure缓存实例时,我收到一个InvalidOperationException(异常和代码如下所示)。代码正在从控制台应用程序运行。当我在azure emulator中以工作者角色运行它时,它工作正常 是否可以使用azure缓存而不在模拟器中运行它 {System.Reflection.TargetInvocationException:异常已被删除 由调用的目标抛出。--> System.InvalidOperationException:角色发现数据不可用 在Microso

尝试在本地创建azure缓存实例时,我收到一个InvalidOperationException(异常和代码如下所示)。代码正在从控制台应用程序运行。当我在azure emulator中以工作者角色运行它时,它工作正常

是否可以使用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>

是的,但不使用自动发现功能。自动发现是用于角色内缓存的功能,需要Azure RoleEnvironment(因此您会收到错误)


另外注意-我不会在Azure共享缓存上进行任何开发-该服务将于2014年退役-请参见

您使用的Azure缓存选项是(服务、角色[专用]、角色[合用]、还是共享)?
        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);
// 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");