[英]Enabling co-located Session Caching in an Azure Cloud Service
現在我有一個Azure Cloud Service托管一個MVC應用程序 - 當前 - 當使用Staging <> Production的VIP交換方法更新時,會殺死所有會話。 我沒有圍繞會話管理做任何配置,所以這是可以預期的。
我現在正試圖通過以下鏈接解決這個問題:
http://www.windowsazure.com/en-us/manage/services/cache/net/how-to-in-role-cache/
我啟用了角色內緩存。 我的dataCacheCLients
看起來像這樣:
<dataCacheClients>
<dataCacheClient name="default">
<!--To use the in-role flavor of Windows Azure Cache, set identifier to be the cache cluster role name -->
<!--To use the Windows Azure Cache Service, set identifier to be the endpoint of the cache cluster -->
<autoDiscover isEnabled="true" identifier="MyRoleName" />
</dataCacheClient>
</dataCacheClients>
以上鏈接指向實際設置會話緩存的web.config:
http://www.windowsazure.com/en-us/manage/services/cache/net/how-to-in-role-cache/#store-session
我在web.config中取消注釋了那個部分(只是會話緩存),現在看起來像這樣:
<!-- Windows Azure Cache session state provider -->
<sessionState mode="Custom" customProvider="AFCacheSessionStateProvider">
<providers>
<add name="AFCacheSessionStateProvider" type="Microsoft.Web.DistributedCache.DistributedCacheSessionStateStoreProvider, Microsoft.Web.DistributedCache" cacheName="default" dataCacheClientName="default" applicationName="AFCacheSessionState"/>
</providers>
</sessionState>
<!-- Windows Azure Cache output cache provider -->
<!--Uncomment this section to use Windows Azure Cache for output cache-->
<!--<caching>
<outputCache defaultProvider="AFCacheOutputCacheProvider">
<providers>
<add name="AFCacheOutputCacheProvider" type="Microsoft.Web.DistributedCache.DistributedCacheOutputCacheProvider, Microsoft.Web.DistributedCache" cacheName="default" dataCacheClientName="default" applicationName="AFCacheOutputCache" />
</providers>
</outputCache>
</caching>-->
現在,當我在本地運行它(沒有使用模擬器,只是IIS中的MVC應用程序)時,我收到以下錯誤:
發現的或指定的地址都不匹配套接字地址族。 參數名稱:context
我在這里沒有太多細節,它只是被拋入Source Not Available
窗口。
因此,我認為這可能只是一個我可以在以后擔心的本地問題,我發布到Azure。 該應用運行正常。 但是部署和VIP交換會中斷會話,因此它似乎無法正常工作。
可能是什么導致了這個? 我試圖准確地遵循所有指示。
我注意到的一件事是,鏈接到的最后一篇文章來自Azure緩存教程 - 我從未設置Azure緩存,因為我使用的是具有我的共同角色的存儲帳戶(根據前面的教程)。 什么可能導致這些問題?
是的,我認為你遇到的是正確的。
首先,您的本地測試失敗是因為您啟動了MVC應用程序。 這樣,您的應用程序在沒有azure仿真器的情況下運行,這意味着緩存客戶端無法從角色名稱(您在web.config中指定的identifier
部分)中找到緩存端點。 我認為如果你在本地模擬器上運行你的應用程序它應該工作。
其次,當您交換VIP時,您的會話應該丟失。 角色內緩存利用您的一些角色實例的內存。 當您交換VIP時,公共IP將被配置到另一個插槽,這意味着您的緩存實例也將被切換。 要解決此問題,我希望您嘗試新的緩存服務(預覽)。 通過這種方式,您可以為訂閱創建專用緩存,以便您可以在雲服務部署,虛擬機和網站中使用它們。
希望這可以幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.