2010-03-12 6 views
1

J'ai plusieurs serveurs EC2 en charge. Certains serveurs ne partagent pas la session, et les utilisateurs continuent de se connecter et de se déconnecter.Plusieurs serveurs Amazon EC2 partagent l'état de la session

Comment puis-je faire toute la part du serveur d'une session, peut-être même en utilisant une solution de partitionresolver

public class PartitionResolver : System.Web.IPartitionResolver 
    { 
     private String[] partitions; 

     public void Initialize() 
     { 
      // create the partition connection string table 
      //       web1,   web2 
      partitions = new String[] { "192.168.1.1" }; 
     } 

     public String ResolvePartition(Object key) 
     { 
      String oHost = System.Web.HttpContext.Current.Request.Url.Host.ToLower().Trim(); 

      if (oHost.StartsWith("10.0.0") || oHost.Equals("localhost")) 
       return "tcpip=127.0.0.1:42424"; 

      String sid = (String)key; 

      // hash the incoming session ID into 
      // one of the available partitions 
      Int32 partitionID = Math.Abs(sid.GetHashCode()) % partitions.Length; 

      return ("tcpip=" + partitions[partitionID] + ":42424"); 
     } 
    } 

-theo

+1

Vous pouvez essayer d'utiliser un serveur SQL pour stocker votre données de session. Ce n'est pas le plus efficace mais quand vous prenez en considération les différents types d'instances EC2 disponibles, cela pourrait vous aider à mieux faire. – RC1140

+0

Je préfère ne pas utiliser SQL pour le moment. –

Répondre