none
如何使用Microsoft AppFabric 1.1 for Windows Server实现单点登录(SSO) RRS feed

  • 问题

  • 这两天花了点时间学习了一下AppFabric的缓存功能,关于AppFabic的会话状态提供程序,MSDN上说:

    “此提供程序仅支持不同 ASP.NET 应用程序读取和写入相同会话状态数据的功能。例如,某位开发人员拥有两个不同的 ASP.NET 站点:/contoso 和 /adventureworks。可以在每个 Web 应用程序中将会话状态提供程序配置为指向缓存群集中的同一会话状态存储。因此,两种应用程序都将读取和写入任何给定会话标识符的同一会话数据

    如果我理解没有错的话,这意味着可以使用AppFabric实现单点登录的功能。于是乎我弄了两个Web应用程序,看是否能实现MSDN给出的功能描述。

    我是这么做测试的,先在其中一个application中执行:

    Session.Add("UserId", "Maverick");

    OK,没有问题,通过 Get-CacheStatistics命令发现信息已经存入AppFabric的缓存,但是在另一个application中,通过Session["UserId"]却无法取得之前存入的值。

    两个应用程序的配置都是一样的。如下所示:

    <configSections>
        <!-- required to read the <dataCacheClient> element -->
        <section name="dataCacheClients" type="Microsoft.ApplicationServer.Caching.DataCacheClientsSection,
                Microsoft.ApplicationServer.Caching.Core, Version=1.0.0.0, 
                Culture=neutral, PublicKeyToken=31bf3856ad364e35" allowLocation="true" allowDefinition="Everywhere"/>
     </configSections>

    <sessionState mode="Custom" compressionEnabled="false" customProvider="AppFabricCacheSessionStoreProvider">
          <providers>
            <add name="AppFabricCacheSessionStoreProvider" type="Microsoft.Web.DistributedCache.DistributedCacheSessionStateStoreProvider, 
         Microsoft.Web.DistributedCache" cacheName="default" useBlobMode="True" 
                 dataCacheClientName="default" applicationName="SingleSignOn" sharedId="MySharedApp" />
          </providers>
        </sessionState>

    <dataCacheClients>
        <dataCacheClient name="default">
          <localCache isEnabled="true" sync="TimeoutBased" objectCount="100000" ttlValue="1"/>
          <!--(optional) specify cache notifications poll interval-->
          <clientNotification pollInterval="300" />
          <hosts>
            <host name="localhost" cachePort="22233"/>
          </hosts>
        </dataCacheClient>
      </dataCacheClients>

    为什么无法实现不同应用获取同一会话数据呢?是我理解上的问题,还是其他什么问题呢?

    大侠助我!谢谢!

    • 已移动 Lie You 2012年3月27日 3:07 (发件人:.NET Framework 一般性问题讨论区)
    2012年3月21日 9:54

全部回复