虚拟机中的Web应用程序是否可以访问azure中的缓存角色



这个问题很简单。我在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();

上面的代码假设您已将Endpoint(名为CacheEndpoint)显式添加到Cache角色(名为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));

最新更新