问题很简单。我在 azure 的虚拟机上部署了一个网站,在云服务上也部署了一个专用的缓存角色。问题是,如何让虚拟机中的网站访问专用缓存角色?请有人给我一些指示或建议一些好文章。
多谢!
你不能。目前唯一可行的解决方案是从同一个云服务(同一个角色或另一个角色)访问缓存。问题是为什么要使用 VM 在 Azure 中部署 Web 应用程序?
这是某种“黑客”,我实际上并没有对其进行测试:
您可以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));