【发布时间】:2014-01-08 04:28:20
【问题描述】:
作为这篇文章的后续:Enabling co-located Session Caching in an Azure Cloud Service - 我正在尝试将会话状态存储在 Azure 缓存中,以在 VIP 交换之间保持会话。引用自答案:
要解决此问题,我希望您尝试新的缓存服务 (预习)。通过这种方式,您可以为订阅创建专用缓存 这样您就可以在云服务部署、虚拟 机器和网站。
我已经设置了一个 Azure 缓存(预览版)实例,在我的 web.config 中使用了它的端点和主访问密钥,并部署到了我的 Azure 云服务暂存槽。
然后我使用 Forms auth 登录,并重新部署到同一个插槽。我的凭据被保留了!很高兴看到这一点。
但后来我 VIP 切换到生产,以相同的方式登录到生产实例,重新部署到 Staging,再次切换 VIP,然后刷新,希望保持登录状态,但它没有工作 - 我的会话丢失了在制作和登台方面。
我已按照此处的说明进行操作:
这可能是什么原因造成的?没有抛出异常 - 我的访问密钥有效(通过给它一个伪造的密钥并获得异常进行测试)......我不确定发生了什么。 web.config 中的配置部分:
<sessionState mode="Custom" customProvider="AFCacheSessionStateProvider" xdt:Transform="Insert">
<providers>
<add name="AFCacheSessionStateProvider" type="Microsoft.Web.DistributedCache.DistributedCacheSessionStateStoreProvider, Microsoft.Web.DistributedCache" cacheName="default" dataCacheClientName="default" applicationName="AFCacheSessionState"/>
</providers>
</sessionState>
还有:
<dataCacheClient name="default">
<autoDiscover isEnabled="true" identifier="mysite.cache.windows.net" />
<securityProperties mode="Message" sslEnabled="false">
<messageSecurity authorizationInfo="{my key}" />
</securityProperties>
</dataCacheClient>
至于超时政策 - 我已将其设置为永不过期并启用驱逐。我是少数用户之一,缓存将 cookie 存储在 128MB 的空间中,所以我认为这与到期无关。
我还注意到在docs 中,没有applicationName 的条目,正如我上面所说的那样。我尝试删除它并重新测试,但无济于事 - 我的 Prod 会话在 VIP 交换时仍然丢失。
我做错了什么?
更新:
来自微软forum post:
我能够重现该问题。我正在调查。
【问题讨论】:
-
不是 100% 肯定,但可能是因为当您从 someguid.cloudapp.net(暂存)到 yourwebsite.dom(生产)进行 VIP 交换时域更改时,ASP.Net 会话 Cookie 变得无效?
-
@GauravMantri - 我希望不会。对于我的应用程序的最终用户而言,这会将 VIP 交换从“无缝更新”转变为“无缝挫折”,并且与使用标准同位缓存(对吗?)没有太大区别。需要说明的是 - 我在交换之前登录了 mywebsite.com,并希望通过交换保持登录状态。
-
我的错 :( 出于某种原因,我以为您登录了一个环境,进行了 VIP 交换,然后还希望保持登录到其他环境。
标签: asp.net-mvc-4 caching azure