2

我在 web.config 中设置了我们的网站,如下所示:

<dataCacheClients>
    <dataCacheClient name="default">
      <hosts>
        <host name="mysite.cache.windows.net" cachePort="22233" />
      </hosts>

      <securityProperties mode="Message">
        <messageSecurity
          authorizationInfo="{key}">
        </messageSecurity>
      </securityProperties>
    </dataCacheClient>
  </dataCacheClients>

我想编辑这个,所以当我在我的笔记本电脑上开发时,我没有点击生产缓存,而是我的笔记本电脑上的缓存。

这对 Google 来说是一个难题(至少对我而言),因为“本地 Azure 缓存”会在 Web 角色上提供缓存。

4

2 回答 2

4

看起来您正在使用 Windows Azure 共享缓存,并且您希望在开发时使用一些本地缓存。

在您的系统中拥有一个抽象缓存层可能会更好,这样您就可以在云和本地之间切换缓存,而不是更改配置。例如,有一个接口ICache,比如GetItem,SetItem等。然后你可以让一些类实现这个接口,这些类在内存缓存中用于本地开发,Azure Cache 用于生产。

在 GitHub 上有一个名为 ServiceStack 的项目,它包含了一些缓存实现,您可以参考https://github.com/ServiceStack/ServiceStack.Contrib/tree/master/src

Alternatively, you can use the new Cloud Service Caching, which provides co-located/dedicate cache clusters alone with your cloud services (web role and worker role). It has full local emulator support which means you don't need to change any code and any configuration between local development (use local cache emulator) and production.

For more information about this Cloud Service Caching you can refer https://www.windowsazure.com/en-us/develop/net/how-to-guides/cache/

于 2012-11-28T02:23:21.977 回答
2

一种选择是使用 Web.config 转换来更改每个部署的配置文件。我不是这方面的专家,但你可以用谷歌弄清楚。

另一种选择是在代码中配置缓存。然后,您可以轻松更改每个环境的 .cscfg 文件中的设置。这是代码中配置的基本示例:

DataCacheFactoryConfiguration cacheConfig = new DataCacheFactoryConfiguration();

//Insert the Authentication Token as shown below
cacheConfig.SecurityProperties = new DataCacheSecurity(config.AuthToken, config.UseSSL);

int cachePort = (cacheUseSSL ? 22243 : 22233);
cacheConfig.Servers = new DataCacheServerEndpoint[] { new DataCacheServerEndpoint(cacheHostName, cachePort) };
cacheConfig.RequestTimeout = TimeSpan.FromSeconds(1);
cacheConfig.ChannelOpenTimeout = TimeSpan.FromSeconds(45);
cacheConfig.MaxConnectionsToServer = config.MaxConnections;
cacheConfig.TransportProperties.ReceiveTimeout = TimeSpan.FromSeconds(30);
cacheConfig.TransportProperties.ChannelInitializationTimeout = TimeSpan.FromSeconds(10);

var cacheFactory = new DataCacheFactory(cacheConfig);
于 2012-11-28T00:08:59.437 回答