2011-08-18 34 views
4

我的應用程序中依賴於部署插槽的一些設置。我理解這樣的設計決定會帶來的懲罰和影響,但是這個決定是最終的,並且適用於我們的案例。託管服務部署插槽更改時觸發的事件(交換VIP)

我想知道的是當您更改託管服務的部署插槽(如果有)時會觸發什麼事件? RoleEnvironmentTopologyChange看起來是正確的,但在decsription中說它會在實例數發生變化時觸發,所以這不是我要找的。

我需要它的原因是使持有插槽的緩存無效 - 這進一步傳遞到解析器,該解析器獲取特定於部署插槽的數據。

回答

2

在VIP交換期間不會發生任何事件。如果您想在交換時更改某些內容,我會建議您在進行交換之前進行配置設置並更改它。

+0

該死。看起來像我需要一個後續問題:http://stackoverflow.com/questions/7110092/fetching-azure-subscription-id-deployment-slot-really-fast :) –

+1

@smarx可能你的意思是「後」,而不是「之前」。如果之前配置被更改,舊值可能會被再次緩存。 – Matej

+1

不,我之前的意思是。您不希望在應用程序仍處於「分段」模式時將其移至生產環境中(無論您的應用程序如何)。所以你通常想改變配置設置,然後*將應用程序轉移到生產環境中。 – smarx

0

您可以通過檢查從網關傳遞給WCF或Web服務器的每個請求的主機頭來檢測VIP交換。您還可以通過檢查主機是否爲GUID來檢測當前插槽。

下面查看如何保持通話 How to write a WCF service with in-memory persistent storage?

VAR主機= WebOperationContext.Current.IncomingRequest.Headers [ 「主機」]之間的變量? 「」;

如果(主機!= currentHost) {

// do something 

currentHost = host; 

}