Azure 1.4 MVC3会话状态和缓存

时间:2013-02-23 19:07:12

标签: c# asp.net-mvc-3 session azure session-state

在多个实例上运行时,我在使用Azure缓存实现会话状态时遇到问题。 这是我在遵循各种教程时所做的:

1 - 设置缓存:我在旧的azure管理门户中添加了一个缓存服务,我在新门户中找不到缓存选项

2 - 更新web.config以包含以下内容:

<configSections>
  <section name="dataCacheClients"
           type="Microsoft.ApplicationServer.Caching.DataCacheClientsSection, Microsoft.ApplicationServer.Caching.Core"
           allowLocation="true"
           allowDefinition="Everywhere" />
</configSections>

<dataCacheClients>
  <dataCacheClient name="default">
    <hosts>
      <host name="superSecretName.cache.windows.net" cachePort="22233" />
    </hosts>
    <securityProperties mode="Message">
      <messageSecurity authorizationInfo="superSecretAuthToken"></messageSecurity>
    </securityProperties>
  </dataCacheClient>
</dataCacheClients>

<system.web>
  <sessionState mode="Custom" customProvider="AppFabricCacheSessionStoreProvider">
    <providers>
      <add name="AppFabricCacheSessionStoreProvider"
           type="Microsoft.Web.DistributedCache.DistributedCacheSessionStateStoreProvider, Microsoft.Web.DistributedCache"
           cacheName="default"
           useBlobMode="true" 
           dataCacheClientName="default" />
    </providers>
  </sessionState>
</system.web>

3 - 跳起一个快乐的舞蹈,直到一切都崩溃和烧伤......

从我在教程和示例中阅读的内容来看,应该像往常一样在代码中使用Session,并让它在后台使用缓存。然而,似乎随机站点崩溃,我已经指出了没有填充的会话。在尝试访问已经放入会话的数据时,我得到空引用异常。我能想到的唯一解释是,天蓝色实例被切换,并且缓存并非真正分布在实例中(I可能是错的,但是。)

我也尝试过不使用会话,而是使用自定义cookie,然后将内容保存在缓存中并使用cookie值从缓存中检索数据,但同样的事情发生了,所以我是猜测它不是会话,而是潜在的缓存。

如标题中所述,Azure版本为1.4。我使用的例子很可能适用于较新的版本。由于许多其他库可能会中断,因此无法选择切换到较新版本的Azure。

0 个答案:

没有答案