2013-07-24 55 views

回答

2

你不能。目前唯一可行的解​​決方案是從同一個雲服務(同一個角色或另一個角色)訪問緩存。問題是您爲什麼使用VM在Azure中部署Web應用程序?

+0

,因爲虛擬機給我更多的空間來安裝外部軟件一樣7zip的,所以我的web應用程序可以利用他們做一些文件處理 – iNc0ming

+0

小型實例雲服務爲您提供200GB空間來安裝第三方應用程序,這對於Web應用程序來說還不夠嗎?! – astaykov

+0

其實我不知道vm和in-role vm有什麼區別? – iNc0ming

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的作用(名爲Cache)。它還假定您有另一個角色作爲緩存角色的相同部署的一部分,可以實際調用上述代碼並返回結果。

或者,您可以使用REST API(使用Service Management Library更容易)來獲取高速緩存端點(即使在不是與高速緩存角色相同部署的一部分的虛擬機角色內)。

那麼你就必須相應地配置客戶端代碼(會話狀態例如/輸出緩存適配器):

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)); 
+0

這是有趣的方法。你試過了嗎? – astaykov

+0

nope。我懷疑這是值得的努力。 – haim770

相關問題