1

问题很简单。我在 azure 的虚拟机上部署了一个网站,在云服务上也部署了一个专用的缓存角色。问题是,如何让虚拟机中的网站访问专用缓存角色?请有人给我一些指示或建议一些好文章。

多谢!

4

2 回答 2

2

你不能。目前唯一可行的解​​决方案是从同一个云服务(同一个角色或另一个角色)访问缓存。问题是为什么要使用 VM 在 Azure 中部署 Web 应用程序?

于 2013-07-24T05:42:27.507 回答
1

这是某种“黑客”,我实际上并没有对其进行测试:

您可以Endpoint向 Cache 角色添加一个,然后使用以下内容获取该角色绑定到的 IP 地址列表:

var cacheRole = Microsoft.WindowsAzure.ServiceRuntime.RoleEnvironment.Roles["Cache"];
var cacheEndPoints = cacheRole.Instances.SelectMany(x => x.InstanceEndpoints).Where(x => x.Key == "CacheEndpoint").ToList();

上面的代码假定您显式地将端点(命名CacheEndpoint)添加到缓存角色(命名Cache)。它还假设您有另一个角色作为缓存角色的同一部署的一部分,该角色能够实际调用上述代码并返回结果。

或者,您可以使用REST API(使用服务管理库更容易)来获取缓存端点(即使在与缓存角色不属于同一部署的 VM 角色中)。

然后您必须相应地配置客户端代码(例如会话状态/输出缓存适配器):

var cacheConfig = new Microsoft.ApplicationServer.Caching.DataCacheFactoryConfiguration();
cacheConfig.AutoDiscoverProperty = new DataCacheAutoDiscoverProperty(false);
cacheConfig.Servers = cacheEndPoints.Select(x => new DataCacheServerEndpoint(x.Value.IPEndpoint.Address.ToString(), x.Value.IPEndpoint.Port));
于 2013-07-24T08:51:34.650 回答