2009-08-12 7 views
0

J'ai développé une application de causerie Silverlight. Dans une seule fenêtre, chargez plus d'une fenêtre de chat en même temps et chaque fenêtre de discussion crée une nouvelle connexion au service duplex wcf. Mais après toutes les 10 fenêtres de discussion, il se déconnecte de wcf et le travail est bloqué. Im code un peu pour l'option de limitation, mais ils ne fonctionnent pas. ceci est mon code: -silverlight déconnecter de wcf duplex après 10 connexions

public class PollingDuplexServiceHostFactory : ServiceHostFactoryBase 
{ 
    public override ServiceHostBase CreateServiceHost(string constructorString, 
     Uri[] baseAddresses) 
    { 
     return new PollingDuplexSimplexServiceHost(baseAddresses); 
    } 
} 

/// <summary> 
/// PollingDuplexServiceHostFactory 
/// </summary> 
class PollingDuplexSimplexServiceHost : ServiceHost 
{ 

    public PollingDuplexSimplexServiceHost(params System.Uri[] addresses) 
    { 
     InitializeDescription(typeof(JakayaChatService), new UriSchemeKeyedCollection(addresses)); 
     Description.Behaviors.Add(new ServiceMetadataBehavior()); 
     var throttle = Description.Behaviors.Find<ServiceThrottlingBehavior>(); 

     if (throttle == null) 
     { 
      throttle = new ServiceThrottlingBehavior 
      { 
       MaxConcurrentCalls = 1000, 
       MaxConcurrentInstances = 1000, 
       MaxConcurrentSessions = 1000 
      }; 
      Description.Behaviors.Add(throttle); 
     } 


    } 

    protected override void InitializeRuntime() 
    { 
     PollingDuplexBindingElement pdbe = new PollingDuplexBindingElement() 
     { 
      ServerPollTimeout = TimeSpan.FromSeconds(05), 
      InactivityTimeout = TimeSpan.FromSeconds(3600) 

     }; 

     // Add an endpoint for the given service contract. 
     this.AddServiceEndpoint(
      typeof(IJakayaChatService), 
      new CustomBinding(
       pdbe, 
       new BinaryMessageEncodingBindingElement(), 
       new HttpTransportBindingElement()), 
       ""); 

     // Add a metadata endpoint. 
     this.AddServiceEndpoint(
      typeof(IMetadataExchange), 
      MetadataExchangeBindings.CreateMexHttpBinding(), 
      "mex"); 

     base.InitializeRuntime(); 

    } 
} 

Répondre

0

La limite de 10 connexions est généralement attribuée au système d'exploitation. Windows XP, par exemple, a une limite de 10 connexions, alors que les systèmes d'exploitation du serveur en autoriseront beaucoup plus dans un environnement de production. Cela dit, le problème peut se limiter à votre environnement de développement, et disparaître lorsqu'il est déployé sur un système d'exploitation supérieur.

Remarques De MS: Pour Windows XP Professionnel, le nombre maximal d'ordinateurs autorisés à se connecter simultanément sur le réseau est de dix. Cette limite inclut tous les protocoles de transport et de partage de ressources combinés. Pour Windows XP Édition familiale, le nombre maximal d'ordinateurs autorisés à se connecter simultanément sur le réseau est de cinq. Cette limite correspond au nombre de sessions simultanées provenant d'autres ordinateurs que le système est autorisé à héberger. Cette limite ne s'applique pas à l'utilisation des outils d'administration qui se connectent à partir d'un ordinateur distant.

Limites de connectivité IIS et optimisation http://blogs.msdn.com/david.wang/archive/2006/04/12/HOWTO-Maximize-the-Number-of-Concurrent-Connections-to-IIS6.aspx

Questions connexes