2个托管服务器之间的共享会话

时间:2017-10-22 12:37:52

标签: asp.net asp.net-mvc session iis ncache

如何在2个托管服务器之间共享LoginUser值之类的会话?

我在10.10.10.120(IIS 8)中托管了2个应用程序,在10.10.10.121(IIS 8)上托管了另一个。

我尝试使用Sql server或NCache服务器但没有工作。

我在2个应用程序和相同配置中使用了相同的机器密钥

注意: - 我准备使用负载平衡服务器

1 个答案:

答案 0 :(得分:0)

我正在使用NCache,它可以在集中存储中存储会话。部署在两个不同Web服务器上的负载平衡应用程序应该能够使用相同的会话对象。我最初使用了安装了NCache的示例会话应用程序,然后按照以下步骤在应用程序端为我工作。

在两个或多个Web服务器上部署的同一应用程序之间的会话共享。

  1. 添加NCache会话状态提供程序程序集。

    <assemblies>
    <add assembly="Alachisoft.NCache.SessionStoreProvider, Version=4.8.0.0, 
    Culture=neutral, PublicKeyToken=CFF5926ED6A53769" />
    </assemblies>
    
  2. 添加NCache会话状态

    <sessionState cookieless="false" regenerateExpiredSessionId="true" mode="Custom" customProvider="NCacheSessionProvider" timeout="1">
                 <providers>
    <add name="NCacheSessionProvider" 
    type="Alachisoft.NCache.Web.SessionState.NSessionStoreProvider" exceptionsEnabled="true" nableSessionLocking="true" emptySessionWhenLocked="false" sessionLockingRetry="-1" sessionAppId="NCacheTestApp" useInProc="false" enableLogs="false" cacheName="SessionsCache" writeExceptionsToEventLog="false" AsyncSession="false" />
                 </providers>
    

  3. 在负载均衡的Webfarm中跨Web服务器保留相同的计算机密钥。

    <machineKey validationKey ="A01D6E0D1A5D2A22E0854CA612FE5C5EC4AECF24"
    decryptionKey ="ACD8EBF87C4C8937" validation ="SHA1"/>
    
  4. 在所有负载均衡的Web服务器上部署相同的应用程序。

  5. 在两个或多个Web服务器上部署的两个不同应用程序之间的会话共享。

    您也可以在两个不同的应用程序之间共享会话数据,如果这是您要在此处实现的目的。

    1. 保持上述所有步骤相同,但确保两个应用程序在SessionState标记下具有相同的sessionAppId =“NCacheTestApp”值。