我的网站在我的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>
我想编辑这个,所以当我在我的笔记本电脑上进行开发时,我没有点击生产缓存,而是在我的笔记本电脑上使用缓存。
对谷歌来说这是一个难题(至少对我而言),因为“azure cache local”会在网络角色上进行缓存。
答案 0 :(得分:4)
看起来您正在使用Windows Azure共享缓存,并且您希望在开发时使用一些本地缓存。
在系统中使用抽象缓存层可能更好,这样您就可以在云和本地之间切换缓存,而不是更改配置。例如,要使用ICache
,GetItem
等方法来创建SetItem
之类的接口。然后,您可以在内存缓存中使用此接口实现一些类以进行本地开发,和Azure Cache用于生产。
在GitHub上有一个名为ServiceStack的项目包含了一些你可以参考的缓存实现https://github.com/ServiceStack/ServiceStack.Contrib/tree/master/src
或者,您可以使用新的云服务缓存,它仅为您的云服务(Web角色和工作人员角色)提供共置/专用缓存群集。它具有完整的本地仿真器支持,这意味着您无需在本地开发(使用本地缓存仿真器)和生产之间更改任何代码和任何配置。
有关此Cloud Service缓存的详细信息,请参阅https://www.windowsazure.com/en-us/develop/net/how-to-guides/cache/
答案 1 :(得分:2)
一种选择是使用Web.config Transformations更改每个部署的配置文件。我不是那方面的专家,但你可以用谷歌来解决这个问题。
另一种选择是在代码中配置缓存。然后,您可以轻松更改每个环境的.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);