SB2*_*055 2 caching azure asp.net-mvc-4
作为这篇文章的后续内容:在Azure云服务中启用协同定位的会话缓存 - 我正在尝试在Azure缓存中存储会话状态以在VIP交换之间保持会话.引用答案:
要解决此问题,我希望您尝试新的缓存服务(预览).通过这种方式,您可以为订阅创建专用缓存,以便您可以在云服务部署,虚拟机和网站中使用它们.
我已经设置了Azure缓存(预览)实例,在我的web.config中使用了其端点和主访问密钥,并部署到我的Azure云服务暂存插槽.
然后我使用Forms auth登录,并重新部署到同一个插槽.我的凭据一直存在!这很棒.
但后来我交换到Production,以相同的方式登录到生产实例,重新部署到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>
Run Code Online (Sandbox Code Playgroud)
和:
<dataCacheClient name="default">
<autoDiscover isEnabled="true" identifier="mysite.cache.windows.net" />
<securityProperties mode="Message" sslEnabled="false">
<messageSecurity authorizationInfo="{my key}" />
</securityProperties>
</dataCacheClient>
Run Code Online (Sandbox Code Playgroud)
至于超时策略 - 我将其设置为永不过期并启用逐出.我是少数几个用户之一,缓存在128MB的空间中存储cookie,所以我认为它与到期有关.
我也注意到在文档中,没有applicationName像我上面那样的条目.我尝试删除它并重新测试,但无济于事 - 我的Prod会话仍然在VIP交换时丢失.
我究竟做错了什么?
更新:
来自微软论坛帖子:
我能够重现这个问题.我正在调查.
表单身份验证不基于会话状态.它仅依赖于客户端cookie.Cookie使用web.config的machineKey部分中指定的密钥进行加密和验证.默认配置是:
<machineKey validationKey="AutoGenerate,IsolateApps"
decryptionKey="AutoGenerate,IsolateApps"
validation="SHA1" decryption="Auto" />
Run Code Online (Sandbox Code Playgroud)
AutoGenerate意味着每台物理机器都有自己的decryptionKey.暂存VM不会接受生产VM生成的Cookie.
在VIP交换之后,旧生产VM设置的所有cookie将被新的生产VM(ex-Staging VM)拒绝,从而导致所有用户被注销.
您需要显式指定machineKey值以强制Forms Auth生成对新旧生产VM都有效的Cookie(请参阅如何:配置MachineKey,Web场部署注意事项部分).
检查这个在线工具的machineKey部分生成:http://aspnetresources.com/tools/machineKey.
UPD:在Windows Azure中管理部署/管理IIS的ASP.NET机器密钥中有相关说明:
Windows Azure自动管理使用IIS部署的服务的ASP.NET machineKey.如果您经常使用VIP交换部署策略,则应手动配置ASP.NET机器密钥.
| 归档时间: |
|
| 查看次数: |
1106 次 |
| 最近记录: |